How to read ManagementObject Collection in WMI using C#

与世无争的帅哥 提交于 2019-12-17 23:17:59

问题


I found a code on net and have been trying to get more information about mo[].

I am trying to get all the information contained in ManagementObjectCollection.

Since parameter in mo is looking for an string value which I dont know, how can I get all the values without knowing its parameter values. Or if I want to get all the indexer values related to mo in 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:


Take a look at your WMI query:

SELECT * FROM Win32_OperatingSystem

It means "get all instances of the Win32_OperatingSystem class and include all class properties". This is a clue that the resulting ManagementObjects are wrappers over the WMI Win32_OperatingSystem class. See the class description to learn what properties it has, what they mean and to decide which ones you actually need to use in your code.

If you need to iterate through all available properties without hard-coding their names, use the Properties property like as Giorgi suggested. Here's an example:

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



回答2:


Use the documentation first so you know what the property means. Experiment with the WMI Code Creator tool.




回答3:


You can iterate through all properties using Properties Property



来源:https://stackoverflow.com/questions/3523844/how-to-read-managementobject-collection-in-wmi-using-c-sharp

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!