2010-06-25 3 views
0

Мой вопрос очень прост, но, похоже, никто не испытал подобную ошибку. Я пишу программу, чтобы проверить, является ли свойство класса WMI доступным для записи, т. Е. Если для этого свойства имеет значение «Write». Мой код выглядит следующим образом:WMI GetPropertyQualifierValue «Не найдено»

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 

Каждый раз, когда она называется, однако, она возвращает «Not Found» исключение, независимо от того, какого свойства или отборочного имя я использую (все из одной-х я пытался Я вытащил из MSDN — они должны быть действительными).

Аналогичным образом, GetQualifierValue не работает при попытке получить квалификаторы класса.

У кого-нибудь есть идеи?

ответ

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; 
      } 
     } 
    } 
} 

Используя код, приведенный ниже, вы увидите, что описание имеет свойство только CIMTYPE, Описание и чтения классификаторов.

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); 
     } 
    } 
} 
+0

Это все! Спасибо. –

Смежные вопросы