从Windows服务显示消息框

问题描述 投票:20回答:6

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

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

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

windows-services messagebox
6个回答
22
投票

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

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


17
投票

您可以使用“WTSSendMessage(...)”函数显示来自服务的消息(自Windows VistaWindows Server 2008以来可用),这是一篇很好的文章:http://msdn.microsoft.com/en-us/library/ms683502(VS.85).aspx


0
投票

来自Wikipedia

虽然通常服务没有用户界面,但开发人员可以添加表单和其他UI组件。在这种情况下,应该在“服务属性”对话框的“登录”选项卡上检查“允许服务与桌面交互”(尽管应该注意这种方法,因为这会导致安全风险,因为任何登录用户都可以与服务互动)。

启用此选项后,您应该能够显示服务中的消息框。


0
投票

允许服务与桌面交互将帮助您从Services.msc控制台执行此操作。

但是,这是一个非常糟糕的主意。特别是如果您以后忘记删除此消息框。该服务将挂起,因为您将有一个没有人可以点击的消息框。


-1
投票

操作系统:XP为Windows服务启用交互模式

程序

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

-2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.