Silverlight(SLOOB)能否在完全信任的情况下启动流程?

时间:2010-03-20 13:51:15

标签: silverlight silverlight-3.0 out-of-browser full-trust

我的任务是使用浏览器应用程序中的silverlight编写安装程序。我需要。

  1. 从本地EXE获取版本
  2. 检查网络服务以查看它是最新版本
  3. 如果不是
  4. ,请下载zip
  5. 解压缩
  6. 覆盖旧的EXE
  7. 启动EXE
  8. 此安装程序应用程序现在使用.NET WinForms编写,但.NET框架是人们下载的障碍。

    推荐的解决方案是使用SLOOB,但我不知道如何分配完全信任。如果我分配完全信任,我可以开始一个过程。

    由于

2 个答案:

答案 0 :(得分:1)

考虑到这一点,我怀疑你将不得不通过COM接口使用WMI创建进程。在一天结束时,这使得这是一个非常困难的选择,并且由于许多原因(WMI被禁用或安全,用户不会给予完全信任等)而导致失败。我怀疑你会好多了如果需要,可以创建一个.msi部署包或类似的能够出去下载框架的东西。有很多可用的部署模型,几乎所有部署模型都比这个更好。

那就是说,如果你要这样做:

要获取COM对象,您将需要使用AutomationFactory.CreateObject(...) API。 Tim Heuer provides a sample here.

要实际执行WMI脚本,您需要创建WbemScripting.SWbemLocator对象作为根。从那里,使用ConnectServer方法在指定的机器上获取wmi服务。然后,您可以询问Win32_Process模块以创建新流程。

编辑:我花了一点时间研究这个,甚至在我的本地机器上作为管理员我遇到了安全问题。正确的代码类似于:

        dynamic locatorService = AutomationFactory.CreateObject("WbemScripting.SWbemLocator");
        dynamic wmiService = locatorService.ConnectServer("winmgmts:{impersonationLevel=impersonate,authentationLevel=Pkt}//./root/cimv2");

        dynamic process = wmiService.Get("Win32_Process");

        dynamic createParameters = process.Methods_["Create"].InParameters.SpawnInstance_;

        createParameters.CommandLine = "cmd.exe";

        wmiService.ExecMethod("Win32_Process", "Create", createParameters);

答案 1 :(得分:1)