我有一个GUI应用程序,用于配置Windows服务,我想从事物GUI应用程序启动,停止或重新启动此服务。
其中一个问题是这个服务可以在两种模式下运行:Windows服务或从命令行手动运行(所以你有一个控制台)。
现在,我正在寻找一种方式来传达这种方式,这种方式在两种情况下都有效。
指定服务进程已经拥有甚至处理的处理程序可能会有所帮助:
CTRL_C_EVENT
CTRL_CLOSE_EVENT
CTRL_BREAK_EVENT
CTRL_LOGOFF_EVENT
CTRL_SHUTDOWN_EVENT
如果我知道服务重启选项会触发什么事件,那么扩展处理程序会很容易。不过,我应该能够从我的GUI应用程序中触发相同的事件,这样即使它在后台运行,我也可以告诉“服务器”重新启动它。
如果我能够在不必检测服务器应用程序运行的模式的情况下执行此操作,那将是最好的。
答案 0 :(得分:2)
您的服务可以监听Service Trigger Events,然后您的GUI可以发送事件。特别是,您希望注册SERVICE_TRIGGER_TYPE_CUSTOM
触发器,这会导致您的服务侦听ETW事件;然后,您的GUI代码将编写ETW事件以触发事件。
答案 1 :(得分:0)
没有服务重启动作。您所要做的就是正常停止服务,然后正常启动服务。这就是内部的所有SCM重启,它只是在SCM UI中作为单个操作公开,而不是作为两个单独的选项。