如何在C#中获得CPU速度和总物理内存?

时间:2010-06-10 18:14:47

标签: c# wmi system

我需要一种简单的方法来检查主机PC的内存和速度。我试过WMI然而我正在使用的代码

 private long getCPU()
 {
    ManagementClass mObject = new ManagementClass("Win32_Processor");
    mObject.Get();
    return (long)mObject.Properties["MaxClockSpeed"].Value;

 }

引发空引用异常。此外,WMI查询有点慢,我需要做一些来获得所有规格。有没有更好的办法?

3 个答案:

答案 0 :(得分:6)

http://dotnet-snippets.com/dns/get-the-cpu-speed-in-mhz-SID575.aspx

using System.Management;

public uint CPUSpeed()
{
  ManagementObject Mo = new ManagementObject("Win32_Processor.DeviceID='CPU0'");
  uint sp = (uint)(Mo["CurrentClockSpeed"]);
  Mo.Dispose();
  return sp;
}

RAM可以在这个SO问题中找到:How do you get total amount of RAM the computer has?

答案 1 :(得分:2)

您应该在PerformanceCounter

中使用System.Diagnostics课程
PerformanceCounter cpuCounter;
PerformanceCounter ramCounter;

cpuCounter = new PerformanceCounter();

cpuCounter.CategoryName = "Processor";
cpuCounter.CounterName = "% Processor Time";
cpuCounter.InstanceName = "_Total";

ramCounter = new PerformanceCounter("Memory", "Available MBytes");


public string getCurrentCpuUsage(){
            cpuCounter.NextValue()+"%";
}

public string getAvailableRAM(){
            ramCounter.NextValue()+"MB";
}

答案 2 :(得分:1)

很多关于处理器,包括它的Mhz速度,可在HKEY_LOCAL_MACHINE \ HARDWARE \ DESCRIPTION \ System \ CentralProcessor

下找到

我正在运行2台Win7x64个电脑,由于某种原因,我第一次运行代码时WMI查询显示一个模糊的数字,第二次运行时它显示正确的处理器速度?

说到性能计数器,我确实与网络计数器一起工作并得到了准确的结果,最终不得不找到更好的解决方案,所以我不相信它们!