我计划使用一个在C#中编写的Windows服务(勾选了“允许服务与桌面交互”选项)来启动/监视UI应用程序。在Windows XP上可以正常工作,但在Windows 7上会弹出以下消息: 当我点击查看消息时,整个屏幕变空白,只显示UI如下图所示。 有没有办法使它在不显示消息和屏幕变空白的情况下正常工作?欢迎留下评论或建议。祝好,DEE
在Vista及以后的版本中,服务无法与桌面进行交互。服务在所谓的“会话0隔离”下运行。你正在尝试的是不可能实现的。你需要重新编写你的应用程序,使UI部分位于运行在已登录用户桌面上的标准Windows应用程序中。这个UI部分可以通过你喜欢的任何IPC机制与服务通信。
"允许服务与桌面交互"是一种已经过时且不被鼓励使用的选项,在Windows Vista及更高版本中可能不起作用。您需要阅读此SO答案中有关此情况的详细信息:Windows中允许服务与桌面交互。然后在这个答案中寻找讨论的其他选择:“允许服务与桌面交互”的替代方法?。还有一个SO之外的讨论:http://social.msdn.microsoft.com/forums/en-US/windowssdk/thread/f8f91e8f-5954-43a7-8bc4-80ed2ff1e3b1/。