在Windows服务下运行UI界面

3
我计划使用一个在C#中编写的Windows服务(勾选了“允许服务与桌面交互”选项)来启动/监视UI应用程序。在Windows XP上可以正常工作,但在Windows 7上会弹出以下消息: enter image description here 当我点击查看消息时,整个屏幕变空白,只显示UI如下图所示。 enter image description here 有没有办法使它在不显示消息和屏幕变空白的情况下正常工作?
欢迎留下评论或建议。
祝好,
DEE
2个回答

7
在Vista及以后的版本中,服务无法与桌面进行交互。服务在所谓的“会话0隔离”下运行。你正在尝试的是不可能实现的。
你需要重新编写你的应用程序,使UI部分位于运行在已登录用户桌面上的标准Windows应用程序中。这个UI部分可以通过你喜欢的任何IPC机制与服务通信。

WCF与命名管道对于这种场景是一个不错的选择。只要注意安全影响即可。你将发布的API不需要UAC提升的权限...但服务会有(实际上这取决于进程的身份)。如果被滥用,该API可能成为恶意代码的入口。 - Steve B
@Steve 当然,最佳实践是使用受限用户来运行服务,绝对要避免使用“SYSTEM”账户。 - David Heffernan

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接