首页 文章

在UWP应用程序中由URI启动的应用程序是否也是沙箱?

提问于
浏览
0

我继承了一个UWP应用程序,并被要求添加一个按钮来启动第三方应用程序 . 第三方应用程序是使用Qt构建的,并且有一个exe作为主程序,它启动第二个作为服务的exe . UWP应用程序将在运行Windows 10的平板电脑上运行 .

我创建了一个安装程序,为第三方应用程序添加了URI的注册表值,因此我可以进行URI激活(LaunchUriAsync方法) . 如果我将URI的目标更改为其他应用程序,它工作正常,所以我知道URI设置正确 .

当我按下按钮时,第三方应用程序无法打开 . 我使用ProcMon来查看发生了什么,并确认它开始打开但在启动第二个exe之前停止 . 没有任何内容写入事件日志,因为这样做太有帮助了 .

我没有找到任何关于此的文档,但我必须假设从UWP应用程序启动的应用程序也是沙箱 . 有谁知道这是否正确?我不知道除了将应用程序重建为WPF之外还要做什么,这不是很吸引人 .

2 回答

  • 0

    你的问题的答案是:不,他们没有被沙箱运行 .

    启动从UWP通过协议以完全信任方式运行的应用程序是一种受支持的方案(例如,如果Outlook是您的默认mailto:提供程序,那么组合电子邮件的工作方式) .

    我怀疑你的协议注册中缺少了什么,或者你是如何调用它的,但问题中没有足够的细节来解决这个问题 .

  • 1

    我能够通过为UWP创建一个新的控制台应用程序来启动我的第三方应用程序,然后为它启动一个新的进程 .

    控制台应用就是这样的:

    var proc = new Process(); 
    proc.StartInfo.FileName = filePath; 
    proc.StartInfo.WorkingDirectory = Path.GetDirectoryName(filePath); 
    proc.Start(); 
    proc.WaitForExit(); 
    var exitCode = proc.ExitCode; 
    proc.Close();
    

    “WorkingDirectory”是必需的,从UWP我没有看到设置方法 .

相关问题