2010-08-19 2 views
20

Я нашел код в сети и пытался получить дополнительную информацию о mo [].Как прочитать сборку ManagementObject в WMI с помощью C#

Я пытаюсь получить всю информацию, содержащуюся в ManagementObjectCollection.

Поскольку параметр в mo ищет строковое значение, которое я не знаю, как я могу получить все значения, не зная значений его параметров. Или если я хочу, чтобы получить все значения индексатора, связанные с мо в ManagementObjectCollection

ManagementObjectSearcher objOSDetails = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"); 
ManagementObjectCollection osDetailsCollection = objOSDetails.Get(); 

foreach(ManagementObject mo in osDetailsCollection) 
{ 
    _osName = mo["name"].ToString();// what other fields are there other than name 
    _osVesion = mo["version"].ToString(); 
    _loginName = mo["csname"].ToString(); 
} 

ответ

36

Посмотрите на свой запрос WMI:

SELECT * FROM Win32_OperatingSystem 

Это означает, что «получить все экземпляры Win32_OperatingSystem класса и включают в себя все свойства класса». Это ключ к тому, что полученные ManagementObject s являются обертками над классом WMI Win32_OperatingSystem. См. class description, чтобы узнать, какие свойства у него есть, что они означают и решить, какие из них вам действительно нужны в вашем коде.

Если вам необходимо выполнить итерирование всех доступных свойств без жесткого кодирования их имен, используйте свойство Properties, например Giorgi suggested. Вот пример:

foreach (ManagementObject mo in osDetailsCollection) 
{ 
    foreach (PropertyData prop in mo.Properties) 
    { 
     Console.WriteLine("{0}: {1}", prop.Name, prop.Value); 
    } 
} 
+0

Что делать, если система выигрывает 8 или 8.1 работает на 64-битной ОС? Какой класс будет использоваться тогда! – Raulp

+2

@Raulp: те же классы. Классы WMI являются бит-агностиками. – Helen

15

Используйте the documentation первый, так что вы знаете, что средства на недвижимость. Поэкспериментируйте с инструментом WMI Code Creator.

+2

Красивый инструмент действительно. – isHuman

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