从Windows服务显示消息框

时间:2010-05-07 06:22:07

标签: windows-services messagebox

您可以从Windows服务中显示消息框(或任何形式的通知)吗?无法让它发挥作用。我用过:

            global::System.Windows.Forms.MessageBox.Show("A fatal error occurred. " +
                ServiceName + " is now terminating.");

但它不起作用,只是产生错误。

6 个答案:

答案 0 :(得分:22)

不,您无法显示服务中的消息框。如果您想报告错误,执行此操作的标准方法是使用event log

对于更多“高级”类型的UI(不仅仅是错误报告),通常这样做的方式是通过常规的Windows应用程序放入用户的Startup文件夹(或注册表中的Run键)并进行会谈通过某种IPC机制(.NET远程处理,WCF,常规套接字,命名管道等)来提供服务。

答案 1 :(得分:16)

可以显示来自具有“WTSSendMessage(...)”功能的服务的消息(自Windows VistaWindows 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服务启用交互模式

程序

  1. 打开“服务”控制面板。例如:开始>控制面板>管理工具>服务。
  2. 选择Cast Iron Secure Connector服务。
  3. 右键单击服务名称,然后选择“属性”。将显示“服务属性”窗口。
  4. 选择“登录”选项卡。
  5. 选择“本地系统”帐户,然后选择“允许服务与桌面交互。”
  6. 单击“确定”。
  7. 点击重新启动。

答案 5 :(得分:-2)

不,你不能。 Windows服务没有GUI。但是您可以显示一些系统托盘通知。