我想知道是否有任何方法可以使用 silverlight 启动本地应用程序。我在使用 IE 8 中嵌入的用户控件执行此操作时遇到了一些安全问题,因此我想将其转换为 silverlight 应用程序。这个小问题阻止了我继续使用 Silverlight,所以如果有任何建议,我将不胜感激。
提前致谢..
卡洛斯。
我想知道是否有任何方法可以使用 silverlight 启动本地应用程序。我在使用 IE 8 中嵌入的用户控件执行此操作时遇到了一些安全问题,因此我想将其转换为 silverlight 应用程序。这个小问题阻止了我继续使用 Silverlight,所以如果有任何建议,我将不胜感激。
提前致谢..
卡洛斯。
使用 Silverlight 4 获得“Out of Browser”支持是绝对有可能的。但是为了访问“主机”机器上的应用程序,您需要做的是证明 SL4 应用程序是受信任的。
这将涉及获得它的证书。这可以从 CA(或类似的 Internet 应用程序)获得,或者您可以生成自己的证书以供 Intranet 使用,并让用户简单地安装它,或者通过另一个自动化的系统管理员样式进程安装它。
底线是,当 SL4 应用程序运行 OOB 并且受信任时,它可以访问主机上的任何内容;到一个点。
即使您可以访问文件等,您仍然不能直接调用应用程序。除非它作为 COM 对象安装。
因此,您需要做的是使用“脚本”宿主 COM 对象调用应用程序。您创建对脚本宿主的引用,然后简单地传入将调用应用程序的命令(和参数,如果您喜欢)。
嘿 presto,你打破了墙 :-)
应该注意的是,用户仍然只能在他们当前被允许的机器上运行应用程序。因此,您将无法在控制受限的用户上调用管理工具。
有关详细信息,请参见此处 http://msdn.microsoft.com/en-us/library/dd550721(VS.95).aspx
这将使 Silverlight 安全模型完全失效。所以,祝你好运。很确定你做不到。这就是官方所说的“坏事”。
我从侏罗纪公园学到的东西:仅仅因为你可以做某事并不意味着你应该做某事。
这在理论上是可能的,在 SL4 中使用 COM 与 Silverlight OOB 互操作,但您仍然会遇到相同的安全问题,此外,还会添加一些部署问题。
为了直接从 IE 中执行此操作,您需要制作一个使用适当的安全权限安装的加载项。任何为此的“自动”模型都会违反标准的 IE 安全策略,因此无法直接从浏览器->本地系统获取。
在我看来,您应该发布一个关于您已经拥有的用户控件开发的问题。最终,无论您使用什么技术,您都需要让用户手动选择加入。当由浏览器托管时,Silverlight 被设计为存在于它无法摆脱的漂亮且安全的沙箱中。在这种情况下,这不是您问题的答案。
您的 Silverlight 应用程序应该是受信任的应用程序,因为它在浏览器上运行。
如果您想在本地机器上启动应用程序,请使用以下代码:
AutomationFactory.CreateObject("WScript.Shell").Run(FilePath);
使用命名空间System.Runtime.InteropServices.Automation