用Windows服务运行UI

时间:2011-09-08 11:41:10

标签: .net windows windows-services

我计划使用Windows服务(用C#编写)运行启动/监控UI应用程序。选中“允许服务与桌面交互”。这适用于windows xp,但是对于Windows 7,弹出窗口如下所示

enter image description here

当我点击查看该消息时,整个屏幕会显示空白,只显示UI,如下所示。

enter image description here

有没有办法使它工作,而不显示消息,屏幕变为空白。

评论/建议赞赏。

此致 DEE

2 个答案:

答案 0 :(得分:7)

在Vista及更高版本中,服务无法与桌面交互。服务在所谓的会话0隔离下运行。你正在尝试的是根本不可能的。

您必须重新编写应用程序,以便UI部件驻留在登录用户桌面上运行的标准Windows应用程序中。这个UI部分可以通过您喜欢的任何IPC机制与服务进行通信。

答案 1 :(得分:3)

“允许服务与桌面交互”是一种遗留选项,现在非常不鼓励,虽然它存在,但预计不会在Windows Vista及更高版本中运行。

你需要先阅读一下为什么在其他SO答案中就是这种情况:
Allow service to interact with desktop in Windows

然后在这里找到答案中讨论的替代方案:
Alternative to "Allow service to interact with desktop"?

SO之外的另一个讨论:
http://social.msdn.microsoft.com/forums/en-US/windowssdk/thread/f8f91e8f-5954-43a7-8bc4-80ed2ff1e3b1/