如何使用C#读取WMI中的ManagementObject集合

我在网上find了一个代码,并试图获得更多有关莫[]的信息

我正在尝试获取ManagementObjectCollection中包含的所有信息。

由于mo中的参数正在寻找一个我不知道的string值,我怎么才能得到所有的值而不知道它的参数值。 或者,如果我想在ManagementObjectCollection获取与mo相关的所有索引值

 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(); } 

Solutions Collecting From Web of "如何使用C#读取WMI中的ManagementObject集合"

看看你的WMI查询:

 SELECT * FROM Win32_OperatingSystem 

这意味着“获取Win32_OperatingSystem类的所有实例并包含所有类属性”。 这是一个线索,由此产生的ManagementObject是WMI Win32_OperatingSystem类的包装。 请参阅类描述以了解它具有的属性,它们的含义以及决定在代码中实际使用哪些属性。

如果您需要迭代所有可用的属性而不用硬编码它们的名字,可以像Giorgi所建议的那样使用Properties属性。 这是一个例子:

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

首先使用文档,以便知道属性的含义。 试用WMI Code Creator工具。

您可以使用“ 属性”属性遍历所有属性