C# 访问WMI中的处理器数
我已经浏览了很多关于WMI的帖子,但仍然有一些问题。我想从WMI检索CPU使用情况,我的查询检索ManagementObjectSearcher必须提供的所有内容,但它返回null,并且从不返回任何信息 另外,对于我正在提取的数据类型,我应该使用int16吗 希望有人能在这件事上透露一些信息,并送我上路。谢谢C# 访问WMI中的处理器数,c#,wmi,C#,Wmi,我已经浏览了很多关于WMI的帖子,但仍然有一些问题。我想从WMI检索CPU使用情况,我的查询检索ManagementObjectSearcher必须提供的所有内容,但它返回null,并且从不返回任何信息 另外,对于我正在提取的数据类型,我应该使用int16吗 希望有人能在这件事上透露一些信息,并送我上路。谢谢 public void GetPhysicalMemory() { ManagementObjectSearcher mgtObj = new ManagementObjectSe
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();
}
}
}
您可以使用变量直接迭代方法返回的集合,从这里可以访问。您可以使用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();
}
}
}
你想得到处理器的数量还是CPU的使用率?实际上,我更想返回CPU的使用率,我在暗中尝试使用NumberOfProcessors来收回任何东西。你知道哪个集合包含CPU的使用率吗?你必须访问性能计数器,试着使用如下类