在我的WinJS应用程序中,我尝试使用Windows.System.launchUriAsync()启动我在Windows注册表中注册的协议。
然后,此协议将启动PowerShell命令行。
看起来像这样:
var uri = new Windows.Foundation.Uri("s3update://FooBarApp");
Windows.System.Launcher.launchUriAsync(uri);
注册表是:
从命令行调用此协议可以正常工作。通过launchUriAsync()调用它并不起作用。我得到一个成功的回调,唯一的论点是' false',根据文档可能与安全限制有关。没有错误,Windows事件目录中没有任何内容。
我尝试创建一个小的可执行文件,然后启动PowerShell命令行。当我修改协议以启动此可执行文件而不是直接启动PowerShell时。它可以从命令行以及我的WinJS应用程序中运行。这是我的问题的可能解决方案,但我真的希望我至少知道为什么launchUriAsync与启动PowerShell的协议的关联不起作用。
答案 0 :(得分:1)
对于系统二进制文件,默认安全策略是通过启动程序URI阻止对uri方案的访问。使用EditFlags值FTA_SafeForElevation
选择安全的系统二进制文件来支持此功能Powershell可能非常危险,因此如果您打算选择进行uri计划注册,请先进行仔细的安全性分析。