我继承了一个UWP应用程序,并被要求添加一个按钮来启动第三方应用程序 . 第三方应用程序是使用Qt构建的,并且有一个exe作为主程序,它启动第二个作为服务的exe . UWP应用程序将在运行Windows 10的平板电脑上运行 .
我创建了一个安装程序,为第三方应用程序添加了URI的注册表值,因此我可以进行URI激活(LaunchUriAsync方法) . 如果我将URI的目标更改为其他应用程序,它工作正常,所以我知道URI设置正确 .
当我按下按钮时,第三方应用程序无法打开 . 我使用ProcMon来查看发生了什么,并确认它开始打开但在启动第二个exe之前停止 . 没有任何内容写入事件日志,因为这样做太有帮助了 .
我没有找到任何关于此的文档,但我必须假设从UWP应用程序启动的应用程序也是沙箱 . 有谁知道这是否正确?我不知道除了将应用程序重建为WPF之外还要做什么,这不是很吸引人 .
2 回答
你的问题的答案是:不,他们没有被沙箱运行 .
启动从UWP通过协议以完全信任方式运行的应用程序是一种受支持的方案(例如,如果Outlook是您的默认mailto:提供程序,那么组合电子邮件的工作方式) .
我怀疑你的协议注册中缺少了什么,或者你是如何调用它的,但问题中没有足够的细节来解决这个问题 .
我能够通过为UWP创建一个新的控制台应用程序来启动我的第三方应用程序,然后为它启动一个新的进程 .
控制台应用就是这样的:
“WorkingDirectory”是必需的,从UWP我没有看到设置方法 .