【问题标题】:WMI GetPropertyQualifierValue "Not found"WMI GetPropertyQualifierValue“未找到”
【发布时间】:2011-03-08 08:30:47
【问题描述】:

我的问题很简单,但显然没有人遇到过类似的错误。我正在编写一个程序来检查 WMI 类的属性是否可写,也就是说,如果该属性的“Write”限定符为真。我的代码如下所示:

ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\\CIMV2", "SELECT * FROM " + "Win32_Processor"); <br />
ManagementObjectCollection moc= mos.Get(); <br />
ManagementClass manClass = new ManagementClass("Win32_Processor"); <br />

bool isWriteable = false;

isWriteable (bool)manClass.GetPropertyQualifierValue("Description", "Write"); <br />
// I've also tried to call it on a ManagementObject instance of ManagementObjectCollection, doesn't work either way

然而,每次调用它时,它都会返回一个“未找到”异常,无论我使用哪个属性或限定符名称(我尝试过的所有名称都是从 MSDN 中提取的——它们应该是有效的)。

同样,GetQualifierValue 在尝试获取类的限定符时也不起作用。

有人有什么想法吗?

【问题讨论】:

    标签: wmi qualifiers


    【解决方案1】:

    检查类的属性是否可写的正确方法是检查“write”限定符是否存在。以下是部分示例代码:

    ManagementClass processClass =
                    new ManagementClass("Win32_Process");
    
    bool isWriteable = false;
    foreach (PropertyData property in processClass.Properties)
    {
        if (property.Name.Equals("Description"))
        {
            foreach (QualifierData q in property.Qualifiers)
            {
                if (q.Name.Equals("write"))
                {
                    isWriteable = true;
                    break;
                }
            }
        }
    }
    

    使用下面的代码,您将看到 Description 属性只有 CIMTYPEDescriptionread 限定符。

    ManagementClass processClass =
             new ManagementClass("Win32_Process");
    processClass.Options.UseAmendedQualifiers = true;
    
    foreach (PropertyData property in processClass.Properties)
    {
        if (property.Name.Equals("Description"))
        {
            foreach (QualifierData q in property.Qualifiers)
            {
                Console.WriteLine(q.Name);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 2020-12-14
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多