code_junkie

How to detect CPU speed on Windows 64bit?

Nov 12th, 2011
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. using System;
  2. using System.Management;
  3.  
  4. namespace CpuSpeed
  5. {
  6. class Program
  7. {
  8. static double? GetCpuSpeedInGHz()
  9. {
  10. double? GHz = null;
  11. using (ManagementClass mc = new ManagementClass("Win32_Processor"))
  12. {
  13. foreach (ManagementObject mo in mc.GetInstances())
  14. {
  15. GHz = 0.001 * (UInt32) mo.Properties["CurrentClockSpeed"].Value;
  16. break;
  17. }
  18. }
  19. return GHz;
  20. }
  21.  
  22. static void Main(string[] args)
  23. {
  24. Console.WriteLine("The current CPU speed is {0}", (GetCpuSpeedInGHz() ?? -1.0).ToString());
  25. Console.ReadLine();
  26. }
  27. }
  28. }
  29.  
  30. RegistryKey registrykeyHKLM = Registry.LocalMachine;
  31. string keyPath = @"HARDWAREDESCRIPTIONSystemCentralProcessor";
  32. RegistryKey registrykeyCPU = registrykeyHKLM.OpenSubKey(keyPath, false);
  33. string MHz = registrykeyCPU.GetValue("~MHz").ToString();
  34. string ProcessorNameString = (string)registrykeyCPU.GetValue("ProcessorNameString");
  35. registrykeyCPU.Close();
  36. registrykeyHKLM.Close();
  37. Console.WriteLine("{0} MHz for {1}", MHz, ProcessorNameString);
  38.  
  39. private float GetCpuClockSpeed()
  40. {
  41. return (int) Registry.GetValue(@"HKEY_LOCAL_MACHINEHARDWAREDESCRIPTIONSystemCentralProcessor", "~MHz", 0);
  42. }
  43.  
  44. Microsoft.Win32.RegistryKey registrykeyHKLM = Microsoft.Win32.Registry.LocalMachine;
  45. string cpuPath = @"HARDWAREDESCRIPTIONSystemCentralProcessor";
  46. Microsoft.Win32.RegistryKey registrykeyCPUs = registrykeyHKLM.OpenSubKey(cpuPath, false);
  47. StringBuilder sbCPUDetails = new StringBuilder();
  48. int iCPUCount;
  49. for (iCPUCount = 0; iCPUCount < registrykeyCPUs.SubKeyCount; iCPUCount++)
  50. {
  51. Microsoft.Win32.RegistryKey registrykeyCPUDetail = registrykeyHKLM.OpenSubKey(cpuPath + "\" + iCPUCount, false);
  52. string sMHz = registrykeyCPUDetail.GetValue("~MHz").ToString();
  53. string sProcessorNameString = registrykeyCPUDetail.GetValue("ProcessorNameString").ToString();
  54. sbCPUDetails.Append(Environment.NewLine + "t" + string.Format("CPU{0}: {1} MHz for {2}", new object[] { iCPUCount, sMHz, sProcessorNameString }));
  55. registrykeyCPUDetail.Close();
  56. }
  57. registrykeyCPUs.Close();
  58. registrykeyHKLM.Close();
  59. sCPUSpeed = iCPUCount++ + " core(s) found:" + sbCPUDetails.ToString();
Add Comment
Please, Sign In to add comment