【问题标题】:Issues in launching desktop extension code from UWP app从 UWP 应用启动桌面扩展代码的问题
【发布时间】:2018-06-13 05:18:05
【问题描述】:

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

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

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

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

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

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

1) 所以我尝试使用 netsh 手动添加 URL reg 并且相同的程序可以工作。只是为了进行调整,我尝试使用管理员权限在系统托盘应用程序本身中运行相同的 netsh 命令,并且只启动了托盘应用程序,我看不到任何异常,并且可以看到我的服务托管在浏览器中。

现在我在通过 UWP 应用程序启动系统托盘应用程序时无法提供管理员权限。

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

或者有什么方法可以提供参数或任何其他 API 以通过 UWP 应用程序中的完全信任 api 与管理员一起运行托盘应用程序???

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

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

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

请帮助。

【问题讨论】:

    标签: wcf uwp system-tray desktop-bridge


    【解决方案1】:

    桌面网桥进程当前不支持请求提升的权限。因此,您在此处看到的内容目前是预期的。好消息是,我们在 RS5(2018 年秋季更新)中添加了一项名为“allowElevation”的新功能,它将支持需要海拔高度的场景。

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

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

    【讨论】:

    • 这个 RS5 正式版大概什么时候发布?
    • 在为侧面加载创建 appx 包时,我还面临另一个问题。调试配置的 Appx 创建成功,但发布配置显示以下错误。清单验证错误:第 29 行,第 64 列,原因:为元素“*[local-name()='Applications']/*[local-name()='Application']/ 声明的文件名“SystemTrayExtension.exe” *[local-name()='Extensions']/*[local-name()='Extension' and @Category='windows.fullTrustProcess']" 包中不存在。
    • 我发现在这种情况下应该使用单独的打包项目来完成打包,如果我错了,请纠正我。我创建了该项目并将 uwp 和托盘应用程序添加为 ref 并选择 uwp 应用程序作为入口点。在我启动 UWP 应用程序本身的示例中,我在 OnLaunched() 中启动托盘应用程序。但是从上面创建的appx安装后,我在系统托盘中看不到托盘应用程序。
    • 我调试并确保它进入了存在的 api 合同,但没有启动托盘应用程序。我在尝试从 VS 启动时也观察到类似的情况,它显示未找到托盘应用程序 .exe。对于调试配置,它会处理这个 .exe,但在发布配置中,VS 在 bin/x64/Release/Appx 中找不到 .exe。我错过了什么吗?
    • 该版本的目标是 2018 年 10 月。确保您在示例中正确设置了启动项目。对于新问题/问题,请在 Stackoverflow 上提出新问题。
    猜你喜欢
    • 1970-01-01
    • 2018-10-14
    • 2017-03-30
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 2019-07-18
    相关资源
    最近更新 更多