能否从UWP应用中启动多个全信任Win32应用?
当然可以!同一个UWP应用完全能启动多个独立Win32全信任进程
你说的场景完全可行——点击UWP里的不同按钮分别启动win32#1和win32#2,只需要完成几个关键配置步骤就行:
1. 整理Win32应用文件
把win32#2的可执行文件及其所有依赖项(比如DLL、资源文件)也放到UWP项目的Win32目录下。为了避免文件冲突,我建议在Win32文件夹下再建两个子文件夹,比如Win32App1和Win32App2,分别存放两个Win32应用的完整文件,这样结构更清晰。
2. 更新Package.appxmanifest配置
你之前已经给win32#1加了全信任进程声明,现在需要给win32#2也添加一份,关键是要给每个进程设置唯一的GroupId,这样代码里才能区分要启动哪个应用。
举个manifest的配置示例:
<Extensions> <!-- 对应win32#1的配置 --> <desktop:Extension Category="windows.fullTrustProcess" Executable="Win32/Win32App1/win32#1.exe"> <desktop:FullTrustProcess> <desktop:ParameterGroup GroupId="LaunchWin32App1" Parameters="" /> </desktop:FullTrustProcess> </desktop:Extension> <!-- 对应win32#2的配置 --> <desktop:Extension Category="windows.fullTrustProcess" Executable="Win32/Win32App2/win32#2.exe"> <desktop:FullTrustProcess> <desktop:ParameterGroup GroupId="LaunchWin32App2" Parameters="" /> </desktop:FullTrustProcess> </desktop:Extension> </Extensions>
注意这里的Executable路径要和你实际的文件存放路径对应,GroupId不能重复。
3. 在UWP代码中绑定按钮点击事件
分别给两个按钮的点击事件添加启动逻辑,通过指定对应的GroupId来启动目标Win32应用:
比如按钮1的点击事件:
private async void ButtonLaunchWin32App1_Click(object sender, RoutedEventArgs e) { await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("LaunchWin32App1"); }
按钮2的点击事件:
private async void ButtonLaunchWin32App2_Click(object sender, RoutedEventArgs e) { await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("LaunchWin32App2"); }
额外注意事项
- 确保两个Win32应用的所有依赖文件都齐全,缺少DLL或资源会导致启动失败;
- 如果两个Win32应用有同名文件,一定要分开存放在子文件夹里,避免文件覆盖;
- 本地调试时可能需要先部署UWP包才能正常启动全信任进程,直接调试可能会有权限问题。
内容的提问来源于stack exchange,提问作者spspli
相关产品推荐
相关产品推荐

