Javascript 使用WMI查找服务的依赖项,然后区分依赖服务和依赖驱动程序
MSDN上有一个代码示例,它使用WMI枚举特定服务的所有依赖项: 这太棒了……但我发现它发现的依赖项可能并不都是同一类型的。我希望所有依赖项都是Win32_服务类型…但有时您会发现,依赖项实际上是一个驱动程序(Win32_SystemDriver) 所以..我的问题很简单-我如何调整MSDN代码示例以对每个依赖项执行检查,并查看它是Win32_服务还是Win32_系统驱动程序,以便能够适当地处理它?如果您在jscript中提供解决方案(MSDN上的示例是vbscript,但我使用的是jscript),则需要额外的注意事项。尝试使用此查询: {Win32_Service.Name=“dhcp”}的关联程序,其中AssocClass=Win32_DependentService ResultClass=Win32_SystemDriver 仅获取Win32_SystemDriver实例,或 {Win32_Service.Name=“dhcp”}的关联程序,其中AssocClass=Win32_DependentService ResultClass=Win32_服务 仅获取Win32_服务实例。关联类使用Javascript 使用WMI查找服务的依赖项,然后区分依赖服务和依赖驱动程序,javascript,service,dependencies,wmi,drivers,Javascript,Service,Dependencies,Wmi,Drivers,MSDN上有一个代码示例,它使用WMI枚举特定服务的所有依赖项: 这太棒了……但我发现它发现的依赖项可能并不都是同一类型的。我希望所有依赖项都是Win32_服务类型…但有时您会发现,依赖项实际上是一个驱动程序(Win32_SystemDriver) 所以..我的问题很简单-我如何调整MSDN代码示例以对每个依赖项执行检查,并查看它是Win32_服务还是Win32_系统驱动程序,以便能够适当地处理它?如果您在jscript中提供解决方案(MSDN上的示例是vbscript,但我使用的是jscrip
Win32_BaseService
基类表示从属服务。因此,如果您没有在关联器或查询(如中)中定义特定的,您将得到任何Win32\u BaseService
子类-Win32\u服务
,Win32\u系统驱动程序
以及Win32\u TerminalService
要以不同方式处理不同的对象类,可以使用属性检查对象的类名。下面是演示此方法的示例JScript代码:
var strComputer = ".";
var strServiceName = "RpcSs";
var oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!//" + strComputer + "/root/cimv2");
var colItems = oWMI.ExecQuery("ASSOCIATORS OF {Win32_Service.Name='" + strServiceName + "'} WHERE AssocClass=Win32_DependentService Role=Antecedent");
var enumItems = new Enumerator(colItems);
var oItem;
for ( ; !enumItems.atEnd(); enumItems.moveNext()) {
oItem = enumItems.item();
switch (oItem.Path_.Class) {
case "Win32_Service":
...
break;
case "Win32_TerminalService":
...
break;
case "Win32_SystemDriver":
...
break;
default:
// another class
...
break;
}
}
这帮助我通过VBScript解决了类似的问题。感谢您提供指向Win32_DependentService
类的链接。