如何使用任意参数从UWP启动完全信任(桌面桥)应用程序

时间:2017-09-01 23:03:21

标签: uwp windows-10 command-line-arguments windows-10-universal desktop-bridge

UWP应用程序是否可以使用任意命令行参数启动其桌面桥(完全信任的应用程序组件)?我看到能够指定"参数组" (请参阅https://docs.microsoft.com/en-us/uwp/api/Windows.ApplicationModel.FullTrustProcessLauncher),但看起来只支持使用预定义的ParameterGroup。我需要以编程方式确定(在启动时)任意命令行参数来启动UWP。这是可能的,如果是的话,怎么样?

2 个答案:

答案 0 :(得分:8)

今天不可能这样。

完成该方案的一种快速方法是让UWP将命令字符串写入本地应用程序数据/设置,该数据/设置在两个进程之间共享。因此,完全信任的进程可以在从那里启动后获取命令字符串。

更复杂的解决方案是在两个进程之间建立app服务连接,并通过该连接传递命令字符串。如果您需要在两个流程之间来回沟通,这将非常有用。

如果由于某种原因您无法更改现有的完全信任流程代码,您可以在您的包中添加一个额外的EXE,它只是从应用数据中读取命令字符串,然后启动您的实际完全信任EXE使用这些参数(使用Process.Start()或等效的东西)。

修改 我在博客上发布了一些更多细节和示例: https://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-2/

答案 1 :(得分:1)

我们无法将参数动态传递给完全信任过程。但是,我们可以使用LocalSettings传递它。

  1. 将参数添加到“本地设置”并启动完整的信任过程: 在C ++中:

    auto settings = Windows::Storage::ApplicationData::Current->LocalSettings; settings->Values->Insert("arg1", "val1"); settings->Values->Insert("arg2", "val2"); // Launch Full trust proc create_task(FullTrustProcessLauncher::LaunchFullTrustProcessForCurrentAppAsync()).then([](task<void> t) {/* ... */});

  2. 在完全信任过程代码中,

    auto settings = Windows::Storage::ApplicationData::Current->LocalSettings; auto val1 = settings->Values->Lookup("arg1")->ToString();