gpt4 book ai didi

javascript - 使用 WMI 查找服务的依赖项,然后区分依赖的服务和依赖的驱动程序

转载 作者:行者123 更新时间:2023-11-30 06:04:16 25 4
gpt4 key购买 nike

MSDN 上有一个代码示例,它使用 WMI 枚举特定服务的所有依赖项:http://msdn.microsoft.com/en-us/library/aa393673(v=vs.85).aspx

这很棒……但我发现它发现的依赖项可能并非都是同一类型。我期望所有依赖项都是 Win32_Service 类型...但有时您会发现依赖项实际上是驱动程序 (Win32_SystemDriver)。

所以..我的问题很简单 - 我如何调整 MSDN 代码示例以对每个依赖项执行检查并查看它是 Win32_Service 还是 Win32_SystemDriver 以便我可以适本地处理它?如果您在 jscript 中提供解决方案,则加分(MSDN 上的示例是 vbscript,但我使用的是 jscript)。

最佳答案

Win32_DependentService关联类表示使用 Win32_BaseService 基类的依赖服务。所以,如果你没有定义一个特定的 ResultClass在您的 ASSOCIATORS OR 查询中(如 Uroc's answer 中),您将获得任何 Win32_BaseService 子类 - Win32_ServiceWin32_SystemDriver 以及 Win32_TerminalService

要以不同方式处理不同的对象类,您可以使用 Path_.Class 检查对象的类名。属性(property)。下面是说明此方法的示例 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;
}
}

关于javascript - 使用 WMI 查找服务的依赖项,然后区分依赖的服务和依赖的驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6134484/

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