从 UWP 应用启动桌面扩展代码的问题

Issues in launching desktop extension code from UWP app

我需要托管 WCF 服务以接收来自服务的响应。由于 UWP 应用程序没有 wcf 托管功能,我选择了这个系统托盘组件来托管我的服务,以便我获得响应并通过应用程序服务与 UWP 应用程序通信并显示 toasts。

但是系统托盘组件在启动后立即终止。为了清楚我的系统托盘与 uwp 的集成,我已经对其进行了测试并且正在运行,然后使用 WCF 托管对其进行了扩展。

后来我尝试添加显示异常消息框的调试,发现 WCF 服务打开调用抛出异常。

"System.ServiceModel.AddressAccessDeniedException: HTTP 无法注册 URL http::1234"

后来了解到,系统托盘应用程序需要管理员权限才能注册作为服务的一部分托管的 URL,并且当 UWP 应用程序通过完全信任 API 启动系统托盘时,它不会不要通过管理员提升。

所以为了解决这个问题,我采用了 2 种方法并尝试了如下所述:

1) 所以我尝试使用 netsh 手动添加 URL reg 并且相同的程序工作。只是为了调整我尝试了 运行 宁 "same netsh command in sys tray app itself with admin priv" 并且只启动了托盘应用程序,我看不到任何异常并且可以看到我的服务托管,在浏览器中检查。

现在我在通过 UWP 应用程序启动系统托盘应用程序时遇到了提供管理员权限的问题。

但是如果托盘应用程序是由 UWP 启动的,即使我包含了 netsh 命令它仍然显示相同的异常。 (可能是父进程(因为 运行 因为管理员是 N/A UWP 应用程序)没有管理员权限,所以即使我在系统托盘应用程序中的 netsh cmd 也不起作用???)

或者是否有任何方法可以通过来自 UWP 应用程序的完全信任 api 向 运行 托盘应用程序提供参数或任何其他 API???

2) 尝试将应用程序清单文件添加到托盘应用程序并修改如下

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

但这也显示了一个错误框,说明这需要提升并退出。

请帮助。

桌面桥进程目前不支持请求提升的权限。所以你在这里看到的是目前预期的。好消息是我们在 RS5(2018 年秋季更新)中添加了一项名为 'allowElevation' 的新功能,它将启用需要提升的场景。

您应该能够使用最新的 Windows Insider Preview 版本和相应的 SDK 开始测试新功能。

2018 年 10 月 1 日更新:我已经发布了这个新功能的示例 https://stefanwick.com/2018/10/01/app-elevation-samples-part-1/