我读了很多关于从 Windows 服务执行 GUI 应用程序的文章。当服务以系统用户身份运行时(我使用的是 Windows XP),“允许服务与桌面交互”复选框对我有用。
现在我需要该服务作为域中定义的用户(来自网络)运行。一切工作正常(即使没有用户登录到机器),但不显示 GUI(即使相同的网络用户登录!)。
我知道 GUI 正在运行,只是它们被隐藏了。这是为什么?有没有办法在用户登录时显示它们(例如由 SYSTEM 用户创建并允许与桌面交互时!)?
如果是这样,如果登录的用户与运行服务的用户不同,它会起作用吗?
Edit:
@casperOne:我看到了你的解决方案,这与人们(甚至你)发布的解决方案是一样的。但就我而言,我确信我正在安全的环境中运行,并且一次只有一个用户会登录到一台计算机。难道就没有什么办法可以简单地取消隐藏 GUI 吗?为什么这适用于允许与桌面交互而不是与其他用户交互的用户系统?
你的方法是完全错误的,部署在Vista上是行不通的。
服务永远不应该假设与桌面进行登录会话进行交互。
相反,您应该有第二个应用程序,该应用程序在用户登录(或某个其他时间点)时运行,该应用程序与服务通信,然后在收到来自服务的通知/响应时显示 UI 元素。
有关更多信息,请参阅其他问题(和答案):
如何检测窗口是否可以显示? https://stackoverflow.com/questions/466199/how-to-detect-if-a-window-can-be-shown
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)