您可以从Windows服务中显示消息框(或任何形式的通知)吗?无法让它发挥作用。我用过:
global::System.Windows.Forms.MessageBox.Show("A fatal error occurred. " +
ServiceName + " is now terminating.");
但它不起作用,只是产生错误。
答案 0 :(得分:22)
不,您无法显示服务中的消息框。如果您想报告错误,执行此操作的标准方法是使用event log。
对于更多“高级”类型的UI(不仅仅是错误报告),通常这样做的方式是通过常规的Windows应用程序放入用户的Startup文件夹(或注册表中的Run键)并进行会谈通过某种IPC机制(.NET远程处理,WCF,常规套接字,命名管道等)来提供服务。
答案 1 :(得分:16)
您可以显示来自具有“WTSSendMessage(...)”功能的服务的消息(自Windows Vista
和Windows Server 2008
后可用),这是一篇好文章:
http://msdn.microsoft.com/en-us/library/ms683502(VS.85).aspx
答案 2 :(得分:0)
来自Wikipedia:
虽然通常服务没有用户界面,但开发人员可以添加表单和其他UI组件。在这种情况下,应在“服务属性”对话框的“登录”选项卡上检查“允许服务与桌面交互”(尽管应谨慎使用此方法,因为这会导致安全风险,因为任何登录用户将能够与服务进行交互)。
启用此选项后,您应该能够显示服务中的消息框。
答案 3 :(得分:0)
允许服务与桌面交互将帮助您从Services.msc控制台执行此操作。
但是,这是一个非常糟糕的主意。特别是如果您以后忘记删除此消息框。该服务将挂起,因为您将拥有一个无人点击的消息框。
答案 4 :(得分:-1)
OS:XP 为Windows服务启用交互模式
程序
答案 5 :(得分:-2)
不,你不能。 Windows服务没有GUI。但是您可以显示一些系统托盘通知。