设置 Windows 服务的状态

Setting Windows Service's Status

我正在尝试创建一个 windows 服务,运行 是我拥有的一个 exe。我一直在使用来自 msdn 的 this guide

我 运行 我的 exe 作为 ProcessOnStart 开始并在 OnStop 停止。 我想知道服务状态 sc query *name* 是如何更新的。

我已尝试按照上述指南的状态部分 here,但调用

serviceStatus.dwCurrentState = ServiceState.SERVICE_STOPPED;
SetServiceStatus(this.ServiceHandle, ref serviceStatus);

并且指南中的那些类型的功能似乎没有任何作用。

我希望能够将服务的状态设置为停止,如果我的 exe 服务 运行s 崩溃或被杀死。

我想到的一个想法是在 OnStart 的线程中有一个单独的函数 运行,它将使用 process.WaitForExit(); 阻塞。在线程停止阻塞后,我想使用上面的函数将服务状态设置为已停止。

有谁知道为什么我无法设置服务状态,或者如何将服务状态link 设置为服务 运行 的 exe?谢谢

不设置服务状态。听起来你应该在 exe 崩溃或被杀死时停止你的服务。 要停止服务,请使用 ServiceBase.Stop()

https://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.stop.aspx

这会将服务状态更改为已停止。