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

Sha*_*pta 22 c# windows wmi winapi

我在网上找到了一个代码,并一直试图获得有关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();
}
Run Code Online (Sandbox Code Playgroud)

Hel*_*len 39

看看你的WMI查询:

SELECT * FROM Win32_OperatingSystem
Run Code Online (Sandbox Code Playgroud)

它意味着"获取Win32_OperatingSystem类的所有实例并包含所有类属性".这是一个线索,结果ManagementObjects是WMI Win32_OperatingSystem类的包装器.查看类描述以了解它具有哪些属性,它们的含义以及决定在代码中实际需要使用哪些属性.

如果您需要迭代所有可用属性而不对其名称进行硬编码,请使用PropertiesGiorgi建议的属性.这是一个例子:

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

  • @Raulp:同一个班级.WMI类与位无关. (2认同)

Han*_*ant 15

首先使用文档,以便了解属性的含义.试用WMI Code Creator工具.

  • 确实很好的工具. (2认同)