【发布时间】:2011-04-29 20:18:07
【问题描述】:
我有一个用 C# 用 .NET 编写的 Windows 服务。我从这里知道:Launching GUI App from Windows Service - Window Does Not Appear。我可以允许服务与桌面交互。但是,在 Windows 7 中,我只是得到一个对话框,告诉我“在这台计算机上运行的程序正在尝试显示一条消息”。该服务是一个更新服务(想想 Windows 更新)我想弹出一个对话框告诉用户正在进行更新并通知他们进度。
1) 我可以在 Windows 7 中显示来自服务的窗口吗?
2) 我可以从服务内部检测它是否可以与桌面交互吗?
谢谢, 斯科特
【问题讨论】:
-
出于安全原因,微软不推荐这种方法。推荐的方法是在用户会话中运行一个监控应用程序,该应用程序与您的服务通信并负责 GUI 交互。
-
您想交流什么? Windows 服务发送要由 GUI 应用程序显示的消息。或者其他方式? GUI App 控制/配置 Windows 服务?
-
服务正在应用更新,所以,我想我需要让服务向 UI 发送消息以向用户提供状态。但是,我明白了。让服务在后台,并在用户会话中运行状态监视器。
-
仅供参考,您可以通过检查 System.Environment.UserInteractive 属性来检测是否可以与桌面交互。但是,在 Vista+ 中,即使 UserInteractive 为 true,您也无法从服务中直接访问 GUI,因此对于 XP 以后的任何东西都没有用处
标签: c# .net windows-services