正在设置Windows服务';s状态

本文关键字:状态 服务 设置 Windows | 更新日期: 2023-09-27 18:28:53

我正在尝试创建一个运行我所拥有的exe的windows服务。我一直在使用msdn的这本指南。

我将exe作为Process运行,它在OnStart中启动,在OnStop中停止。我想知道服务状态sc query *name*是如何更新的。

我试着按照上面指南的状态部分,但打电话给

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

指南中的这些功能似乎没有任何作用。

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

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

有人知道为什么我不能设置服务状态,或者如何将服务状态链接到服务运行的exe吗?感谢

正在设置Windows服务';s状态

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

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

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