【问题标题】:Can Silverlight (SLOOB) start a process even with full trust?Silverlight (SLOOB) 能否在完全信任的情况下启动流程?
【发布时间】:2010-03-20 13:51:15
【问题描述】:

我的任务是编写一个带有silverlight 浏览器应用程序的安装程序。我需要。

  1. 从本地 EXE 中获取版本
  2. 检查网络服务以查看它是否是最新版本
  3. 如果没有,请下载一个 zip
  4. 解压压缩包
  5. 覆盖旧的EXE
  6. 启动EXE

这个安装程序现在是用 .NET WinForms 编写的,但是 .NET 框架是人们下载的障碍。

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

谢谢

【问题讨论】:

  • 正在安装的应用程序是 .NET 应用程序?如果是这样,.NET 框架会以何种方式成为安装程序的障碍?

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


【解决方案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);

【讨论】:

    【解决方案2】:

    【讨论】:

    • 据我所知,这是从 CD 或类似的东西安装 Silverlight OOB 应用程序,对吗?是否有某种方法可以调整它以将其用作完整应用程序安装的引导程序?
    猜你喜欢
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2010-12-10
    • 1970-01-01
    相关资源
    最近更新 更多