gpt4 book ai didi

c - windows xp下如何监控windows服务的状态变化?

转载 作者:太空狗 更新时间:2023-10-29 15:37:12 25 4
gpt4 key购买 nike

我正在尝试用 C 编写一个程序,它可以检测某些 Windows 服务(也称为 NT 服务)何时启动或停止。

好像有一个函数NotifyServiceStatusChange ,但这仅适用于 Vista 和 Windows 7。我正在尝试在 Win XP 上执行此操作,那么最好的方法是什么?除了连续轮询,还有其他的吗?

编辑:

有人能用 C 给出答案吗?我也可以使用 C++,但我想远离脚本。

最佳答案

看起来您在 XP 中可以获得的最接近的是 QueryServiceStatusEx (单一服务)或 EnumServicesStatusEx (多项服务)。

为了避免重复调用其中任何一个,一些人推荐 WMI 设置,查询 Win32_Servicestate 属性。见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 上找到.

关于c - windows xp下如何监控windows服务的状态变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1189815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com