如何在Windows XP下监控Windows服务的状态变化?

前端之家收集整理的这篇文章主要介绍了如何在Windows XP下监控Windows服务的状态变化?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试用C编写一个程序,它可以检测何时启动或停止某些Windows服务(即NT服务).

似乎有一个功能NotifyServiceStatusChange,但这只适用于Vista和Windows 7.我试图在Win XP上这样做,那么最好的方法是什么?除连续投票外还有其他吗?

编辑:

有人能用C答案吗?我对C也很好,但我想远离脚本.

看起来你在XP中最接近的是 QueryServiceStatusEx(单一服务)或 EnumServicesStatusEx(多种服务).

为避免重复调用其中任何一个,有人建议使用WMI设置,查询Win32_Service的state属性.有关详细信息,请参见this thread底部.

以下是监视警报器服务状态的(基本)WMI脚本:

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:" &_
    "{impersonationLevel=impersonate}!" &_
    "\\" & strComputer & "\root\cimv2")

Set objEventSource = objSWbemServices.ExecNotificationQuery( _
    "SELECT * FROM __InstanceModificationEvent " &_
    "WITHIN 10 " &_
    "WHERE TargetInstance " &_
    "ISA 'Win32_Service' " &_
    "AND TargetInstance.Name = 'alerter'")

Set objEventObject = objEventSource.NextEvent()
Wscript.Echo "The status of the alerter service just changed."

以上和其他示例可以在this TechNet page找到.

猜你在找的Windows相关文章