Как прочитать сборку 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();
}
Ответы
Ответ 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.
Ответ 3
Вы можете выполнять итерацию по всем свойствам с помощью Свойства свойства