加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-13 20:26:29 所属栏目:Windows 来源:网络整理
导读:我正在尝试用C编写一个程序,它可以检测何时启动或停止某些Windows服务(即NT服务). 似乎有一个功能NotifyServiceStatusChange,但这只适用于Vista和Windows 7.我试图在Win XP上这样做,那么最好的方法是什么?除连续投票外还有其他吗? 编辑: 有人能用C答案吗
我正在尝试用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 & "rootcimv2")

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找到.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读