2011-09-08 48 views
3

我打算使用Windows服务(用C#编写)运行启动/监视UI应用程序,并选中“允许服务与桌面交互”。此正常工作与Windows XP,但有窗7弹出如下所示使用Windows服务运行用户界面

enter image description here

,当我上视图单击消息,则在整个屏幕空白出来,用唯一的用户界面显示出来,如图所示下面。

enter image description here

有没有什么办法让它不被显示的信息和屏幕一片空白工作。

意见/建议赞赏。

问候 DEE

回答

3

“允许服务与桌面交互”是一项遗留选项,现在非常沮丧,虽然它存在,但预计无法在Windows Vista及更高版本中使用。

你需要阅读这是为什么在这个其他的情况了一点,所以回答:
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/

7

在Vista和更高版本,服务无法与桌面交互。服务在所谓的会话0隔离下运行。你试图做什么是根本不可能的。

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

+0

带有命名管道的WCF是这种情况的不错选择。只要注意安全含义。您将发布的API不需要UAC提升权限......但该服务将具有(实际上取决于进程的身份)。如果被滥用,api可能成为恶意代码的网关 –

+0

@Steve当然,最好的做法是将服务作为受限用户运行,并且绝对避免使用“SYSTEM”帐户。 –

相关问题