我在这里看了很多关于WMI的帖子,但我仍然遇到了一些麻烦。我想从WMI中检索CPU使用情况,我的查询检索ManagementObjectSearcher提供的所有内容,但它返回null并且从不提取任何信息。
另外,对于我要拉的数据类型,我应该使用int16吗?
希望有人可以对此有所了解并在途中发送给我。感谢。
public void GetPhysicalMemory()
{
ManagementObjectSearcher mgtObj = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_ComputerSystem"); // Win32_OPeratingSystem");
ManagementObjectCollection mgtColl = mgtObj.Get();
// foreach (ManagementObject obj in mgtObj.Get())
if (mgtColl.Count != 0 )
{
foreach (ManagementBaseObject mgtBaseObj in mgtColl)
{
var[] data = mgtBaseObj["NumberOfProcessors"] as int16[];
if (data != null)
{
Console.WriteLine(data);
}
else
{
Console.WriteLine("Collection = null");
Console.Read();
Console.Read();
}
}
}
答案 0 :(得分:0)
您可以使用ManagementObjectSearcher.Get变量直接遍历ManagementObject方法返回的集合,从这里您可以访问您可以使用item属性或通过[]表示法访问每个属性。
检查此示例应用程序。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;
using System.Text;
namespace ConsoleFoo
{
class Program
{
static void Main(string[] args)
{
try
{
ManagementObjectSearcher mgtObj = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_ComputerSystem");
foreach (ManagementObject item in mgtObj.Get())
{
Console.WriteLine("Number Of Processors {0}", item["NumberOfProcessors"]);
}
}
catch (ManagementException e)
{
Console.WriteLine("Exception {0} ", e.Message);
}
Console.ReadKey();
}
}
}