2016-01-10 5 views
0

Я запускаю следующий код, пытаясь получить ChassisType устройства, на котором он запущен.ManagementObjectSearcher на свойство массива WMI

string wmiQuery = string.Format(
    "SELECT ChassisTypes FROM Win32_SystemEnclosure"); 
ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery); 
foreach (ManagementObject obj in searcher.Get()) 

Когда я запускаю это и пытаюсь преобразовать его в строку, он дает мне пустую строку. Когда я попытаюсь проверить, что искатель.get() возвращается в Autos. Это дает мне время для оценки, а затем исключение ... Если я просто позволю ему запустить, он действительно возвращает

Я игнорирую оценку, потому что получаю такое же исключение, когда я пытаюсь изучить другие запросы WMI, и я знают, что они работают и возвращают требуемые значения. Я также не знаю, с чего начать, хотя это препятствует устранению неполадок.

Я думаю, проблема в том, что свойство ChassisTypes представляет собой массив ... но я не знаю, как получить значение. Я не могу запустить другой foreach в моем объекте управления obj, потому что у управляющих объектов есть GetEnumerator.

Любые идеи о том, как 1. отсортировать время оценки ... или даже лучше 2. получить доступ к свойствам массива WMI.

Приветствия

ответ

1

Сортировка 2. прибегая к помощи правильно: P

Я должен был, но объекты, возвращаемые поисковика в массив, а затем Foreach через этот массив, чтобы получить мое значение:

var deviceType = ""; 
    string wmiQuery = string.Format(
     "SELECT ChassisTypes FROM Win32_SystemEnclosure"); 
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery); 
    ManagementObjectCollection qCollect = searcher.Get(); 
    foreach (ManagementObject obj in qCollect) 
    { 
     Int16[] rs = (Int16[])obj["ChassisTypes"]; 
     foreach (var item in rs) 
     { 
      if (item == 9 || 
       item == 10 || 
       item == 14) 
      { 
       deviceType = "Laptop"; 
      } 
      else 
      { 
       deviceType = "Non-Laptop"; 
      } 

По-прежнему не знаю, почему я получаю исключение при попытке просмотреть поисковик. Но моя проблема сортируется.