1

我有一个用于配置 Windows 服务的 GUI 应用程序,我想从事物 GUI 应用程序启动、停止或重新启动此服务。

问题之一是该服务可以以两种模式运行:Windows 服务或从命令行手动运行(因此您有一个控制台)。

现在,我正在寻找一种沟通方式,一种适用于两种情况的方式。

指定服务进程已经拥有甚至处理程序可能会有所帮助:

  • CTRL_C_EVENT
  • CTRL_CLOSE_EVENT
  • CTRL_BREAK_EVENT
  • CTRL_LOGOFF_EVENT
  • CTRL_SHUTDOWN_EVENT

如果我知道服务重启选项将触发什么事件,那么扩展处理程序将非常容易。尽管如此,我应该能够从我的 GUI 应用程序中触发相同的事件,这样即使它在后台运行,我也可以告诉“服务器”自行重启。

最好的办法是我可以做到这一点,而不必检测服务器应用程序以哪种模式运行。

4

2 回答 2

2

您的服务可以侦听服务触发事件,然后您的 GUI 可以发送事件。特别是,您想注册一个SERVICE_TRIGGER_TYPE_CUSTOM触发器,这会导致您的服务侦听 ETW 事件;然后,您的 GUI 代码将编写 ETW 事件来触发该事件。

于 2013-07-22T22:27:39.750 回答
0

没有服务重新启动操作。您要做的就是正常停止服务,然后再正常启动服务。这就是 SCM 重新启动在内部所做的所有工作,它只是在 SCM UI 中作为单个操作公开,而不是作为两个单独的选项。

于 2013-07-22T23:20:52.420 回答