如何响应Windows服务状态的更改?

3

我想知道是否有可能获取或创建一个Windows服务状态更改的事件。

我知道ServiceController类没有该事件,但它有状态。是否有任何方法可以监听该事件?

2个回答

4
这正是NotifyServiceStatusChange函数的用途。文档指出它:
启用应用程序在指定服务被创建、删除或其状态更改时接收通知。
我不确定是否有等效的托管代码事件,但使用P/Invoke很容易获得这个函数。
但请注意,此函数仅在Windows Vista及更高版本中可用。如果您需要针对早期版本进行目标设置,则可以在此问题的答案之一中找到解决方案。

0
使用NotifyServiceStatusChange需要管理员权限。
服务控制器确实有一个ServiceController.WaitForStatus,可以设置为监听更改并创建事件。虽然不太美观,但不需要管理员权限,因此在某些情况下可能会有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接