在 UWP 应用程序中由 URI 启动的应用程序是否也被沙盒化?
Are apps launched by URI in a UWP app also sandboxed?
我继承了一个 UWP 应用程序,并被要求添加一个按钮来启动第 3 方应用程序。第 3 方应用程序是用 Qt 构建的,并且有一个 exe 作为主程序,它启动作为服务的第二个 exe。 UWP 应用程序 运行 平板电脑 运行ning Windows 10.
我创建了一个安装程序,它为第 3 方应用程序的 URI 添加了注册表值,因此我可以执行 URI 激活(LaunchUriAsync 方法)。如果我将 URI 的目标更改为不同的应用程序,它工作正常,所以我知道 URI 设置正确。
当我点击按钮时,第 3 方应用程序没有打开。我使用 ProcMon 查看发生了什么,并确认它开始打开,但在启动第二个 exe 之前停止。没有任何内容写入事件日志,因为这太有帮助了。
我没有找到任何关于此的文档,但我必须假设从 UWP 应用程序启动的应用程序也被沙盒化了。有谁知道这是否正确?除了将应用程序重建为 WPF 或其他东西之外,我不确定该怎么做,这不是很有吸引力。
您的问题的答案是:不,它们没有被 运行 沙盒化。
通过协议从 UWP 启动 运行 完全信任的应用程序是一种受支持的方案(例如,如果 Outlook 是您的默认 mailto: 提供商,这就是撰写电子邮件的方式)。
我怀疑您的协议注册或调用方式中缺少某些内容,但问题中没有足够的详细信息来解决此问题。
我能够通过为 UWP 创建一个新的控制台应用程序来启动我的第 3 方应用程序,然后为它启动一个新进程。
控制台应用就是这样:
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 我看不到设置它的方法。
我继承了一个 UWP 应用程序,并被要求添加一个按钮来启动第 3 方应用程序。第 3 方应用程序是用 Qt 构建的,并且有一个 exe 作为主程序,它启动作为服务的第二个 exe。 UWP 应用程序 运行 平板电脑 运行ning Windows 10.
我创建了一个安装程序,它为第 3 方应用程序的 URI 添加了注册表值,因此我可以执行 URI 激活(LaunchUriAsync 方法)。如果我将 URI 的目标更改为不同的应用程序,它工作正常,所以我知道 URI 设置正确。
当我点击按钮时,第 3 方应用程序没有打开。我使用 ProcMon 查看发生了什么,并确认它开始打开,但在启动第二个 exe 之前停止。没有任何内容写入事件日志,因为这太有帮助了。
我没有找到任何关于此的文档,但我必须假设从 UWP 应用程序启动的应用程序也被沙盒化了。有谁知道这是否正确?除了将应用程序重建为 WPF 或其他东西之外,我不确定该怎么做,这不是很有吸引力。
您的问题的答案是:不,它们没有被 运行 沙盒化。
通过协议从 UWP 启动 运行 完全信任的应用程序是一种受支持的方案(例如,如果 Outlook 是您的默认 mailto: 提供商,这就是撰写电子邮件的方式)。
我怀疑您的协议注册或调用方式中缺少某些内容,但问题中没有足够的详细信息来解决此问题。
我能够通过为 UWP 创建一个新的控制台应用程序来启动我的第 3 方应用程序,然后为它启动一个新进程。
控制台应用就是这样:
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 我看不到设置它的方法。