Подтвердить что ты не робот

Как прочитать сборку ManagementObject в WMI с помощью С#

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

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

Поскольку параметр mo ищет строковое значение, которое я не знаю, как я могу получить все значения, не зная значений его параметров. Или если я хочу получить все значения индексатора, связанные с 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();
}
4b9b3361

Ответ 1

Взгляните на свой запрос WMI:

SELECT * FROM Win32_OperatingSystem

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

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

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

Ответ 2

Сначала используйте документацию, чтобы вы знали, что означает свойство. Поэкспериментируйте с инструментом WMI Code Creator.