【问题标题】:JScript / WMI - How to check the class/type of an item?JScript / WMI - 如何检查项目的类/类型?
【发布时间】:2011-09-04 05:01:57
【问题描述】:

在下面的代码示例中,我如何检查 objItem 是什么类型/类? (即是否是 Win32_Service)

var wbemFlagReturnImmediately = 0x10;
var wbemFlagForwardOnly = 0x20;

var objWMIService = GetObject("winmgmts:\\\\.\\root\\CIMV2");
var colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Service", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly);

var enumItems = new Enumerator(colItems);
for (; !enumItems.atEnd(); enumItems.moveNext())
{
   var objItem = enumItems.item();
   ...

我想在末尾添加一个条件,例如:

if(objItem 属于 Win32_Service 类) { 做东西 }

【问题讨论】:

标签: javascript class types wmi


【解决方案1】:

我认为,没有必要在这段代码中检查类的类型。因为您在 WQL 中要求 Win32_Service 类。所以,它只会返回那个类。您可以开始获取Win32_Service 的属性,例如objItem.Caption.

【讨论】:

  • 其实不是这样,这个调用可以(至少)返回 Win32_Service 和 Win32_SystemDriver。无论哪种方式,我都非常有兴趣了解如何检查 objItem 的类型/类,因为这对我在其他项目中也有帮助。
  • @DaveUK:Win32_Service 查询应该只返回 Win32_Service 实例。如果您查询 Win32_BaseService,您将获得 Win32_Service 和 Win32_SystemDriver 实例。
  • @Uros:SELECT 查询是这样,但ASSOCIATORS OF 查询可以返回两者,如Dave's other question
  • @Helen:感谢您的更新。如果您使用 Associators Of 查询是这样,如果您不使用 ResultClass 子句来限制返回的实例,则一个查询可以返回多个 WMI 类的实例。
【解决方案2】:

检查 SWbemObject.Path_Class 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 2015-08-19
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多