具备全信任权限的UWP应用启动EXE能否传递特定参数及配置方法咨询
关于全信任UWP应用启动EXE及参数传递的问题解答
1. 具备全信任功能的UWP应用能否向启动的EXE传递专属参数?
完全可以!借助UWP的FullTrustProcessLauncher API,你不仅能启动全信任EXE,还能轻松传递自定义的专属参数。
具体操作要点:
- 先确保你的UWP应用已启用全信任进程扩展(在Package.appxmanifest中添加对应声明)。
- 使用
LaunchFullTrustProcessForCurrentAppAsync的重载方法,直接传入参数字符串。 - 在目标全信任EXE中,通过
Main方法的参数数组或者Environment.GetCommandLineArgs()就能获取到传递的参数。
举个C#实现示例:
UWP端启动代码
using Windows.ApplicationModel; // 启动全信任EXE并传递专属参数 await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("your-exe-specific-param");
全信任EXE接收参数代码
static void Main(string[] args) { if (args.Length > 0) { string receivedParam = args[0]; // 这里处理参数对应的业务逻辑 } }
2. 直接在Package.appmanifest中给外部EXE(如mstsc.exe)传参数为什么不行?有什么替代方案?
这种方式确实无法生效——因为Package.appmanifest里配置的启动参数是给你自己的全信任组件用的,不能直接传递给第三方外部EXE(比如mstsc.exe)。当你尝试在manifest里写mstsc /v:hostname时,系统会把整个字符串当作启动目标,而不会拆分EXE路径和参数,自然启动失败。
靠谱的替代实现方案
你需要做一个全信任中间进程EXE:让UWP先启动这个中间EXE,再由中间EXE负责调用外部程序并传递参数。
具体步骤:
- 在你的解决方案里新增一个全信任的控制台/WinForms项目(作为中间载体)。
- UWP通过
FullTrustProcessLauncher启动这个中间EXE,同时传递目标主机名等参数。 - 中间EXE接收参数后,用
Process.Start启动mstsc并拼接所需参数。
示例代码:
UWP端启动中间EXE
string targetHost = "your-target-hostname"; await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync(targetHost);
中间全信任EXE启动mstsc的代码
using System.Diagnostics; static void Main(string[] args) { if (args.Length > 0) { string hostname = args[0]; // 启动远程桌面并传递目标主机参数 Process.Start(new ProcessStartInfo { FileName = "mstsc.exe", Arguments = $"/v:{hostname}" }); } }
最后别忘了在Package.appxmanifest里正确配置全信任进程扩展,指向你的中间EXE即可。
内容的提问来源于stack exchange,提问作者Vatsal




