我正在尝试用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找到.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。