我一直在阅读很多关于从Windows服务执行GUI应用程序的内容.当服务以SYSTEM用户身份运行时(我使用的是Windows XP),"允许服务与桌面交互"复选框对我有用.现在我需要服务作为域(在网络中)中定义的用户运行.一切正常(即使没有用户登录到机器),但未显示GUI(即使登录了相同的网络用户!).我知道GUI正在运行,只是它们被隐藏了.这是为什么?有没有办法在用户登录时显示它们(比如由SYSTEM用户创建并允许与桌面交互!)?如果是这样,如果登录的用户与运行该服务的用户不同,它会起作用吗?
@casperOne:我看到了你的解决方案,人们(甚至你)一直在发帖.在我的情况下,我确信我在一个安全的环境中运行,一次只有一个用户将登录到一台机器.简单地取消隐藏GUI是不是可以做任何事情?为什么这适用于用户SYSTEM允许与桌面交互而不与其他用户交互?
您的方法完全错误,在Vista上部署时无法正常工作.
服务应该永远不要假设与桌面进行登录会话以进行交互.
相反,您应该拥有第二个应用程序,该应用程序在用户登录时(或其他某个时间点)运行,并与服务进行通信,然后在接收到来自服务的通知/响应时显示UI元素.
有关详细信息,请参阅此其他问题(和答案):
如何检测是否可以显示窗口?