You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

具备全信任权限的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负责调用外部程序并传递参数。

具体步骤:

  1. 在你的解决方案里新增一个全信任的控制台/WinForms项目(作为中间载体)。
  2. UWP通过FullTrustProcessLauncher启动这个中间EXE,同时传递目标主机名等参数。
  3. 中间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

火山引擎 最新活动