【问题标题】:How to launch a full-trust (desktop bridge) app from UWP with arbitrary parameters如何使用任意参数从 UWP 启动完全信任(桌面桥)应用程序
【发布时间】:2018-02-11 00:47:23
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    不,这在今天是不可能的。

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

    更复杂的解决方案是在两个进程之间建立应用服务连接,并通过该连接传递命令字符串。如果您需要在两个进程之间保持来回通信,这将很有帮助。

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

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

    【讨论】:

    • Process.Start() 在 Windows 10 S 中不起作用,这意味着任何使用它的 UWP 应用都不会被 MSFT 应用商店接受。
    • 这是不正确的。 Process.Start() 在 Windows 10S 上运行良好,只要 EXE 随您的包一起提供。您的应用将在 Microsoft Store 中被接受。
    • 你能详细说明一下write the command string to the local app data/settings吗?你到底是什么意思?也许是一行代码?
    • 我的意思是在启动进程之前使用 UWP 中的以下 API 编写命令字符串,然后使用相同的 API 在完全信任进程中获取它(因为两个进程在相同的本地应用数据):docs.microsoft.com/en-us/windows/uwp/design/app-settings/…
    • @StefanWickMSFT 谢谢!完美的。 (顺便说一句,除非您@ispiro我,否则我不会收到您的回复通知。但我检查了一下,所以我看到了。)再次感谢。
    【解决方案2】:

    我们不能动态地将参数传递给完全信任过程。但是,我们可以使用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();

    【讨论】:

      猜你喜欢
      • 2017-07-11
      • 1970-01-01
      • 2018-02-09
      • 2019-01-21
      • 2019-07-26
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2018-04-26
      相关资源
      最近更新 更多