从UWP app

时间:2018-06-13 05:18:05

标签: wcf uwp system-tray desktop-bridge

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

但是systray组件在启动后立即终止。为了清楚我的systray与uwp的集成,我已经测试了它并且正在工作,然后通过WCF托管扩展它。

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

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

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

所以为了解决这个问题,我得到了两种方法并尝试如下所述:

1) 所以我尝试使用netsh手动添加URL reg,同样的程序也可以。只是为了调整我尝试使用admin priv"在sys托盘应用程序中运行"相同的netsh命令。并且只启动托盘应用程序,我看到没有异常,可以看到我的服务托管,在浏览器中检查。

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

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

OR有没有办法提供参数或任何其他API来通过UWP app的完全信任api来管理托盘应用程序?

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

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

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

请帮助。

1 个答案:

答案 0 :(得分:1)

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

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

更新10/1/2018:我已为此新功能发布了一个示例 https://stefanwick.com/2018/10/01/app-elevation-samples-part-1/