C# 获取系统硬件信息
2014-02-25 23:27
471 查看
在做程序性能分析工具(profiler),需要顺便得到系统硬件的静态信息,以及实时的动态信息。部分代码如下
class HardWare { private MEMORY_INFO mi = new MEMORY_INFO(); /// <summary> /// 获取内存占用率 /// </summary> /// <returns></returns> public uint getMemoryUsage() { ExternC.GlobalMemoryStatus(ref mi); return mi.dwMemoryLoad; } /// <summary> /// 获取系统物理内存大小 /// </summary> /// <returns></returns> public static string getPhysicalMemorySize() { ManagementClass osClass = new ManagementClass("Win32_PhysicalMemory"); ulong Capacity = 0; StringBuilder CapacityString = new StringBuilder(); foreach (ManagementObject obj in osClass.GetInstances()) { if (obj["Capacity"] != null) { ulong CurrentCapacity = (ulong)obj["Capacity"] / 1024 / 1024 / 1024; Capacity += CurrentCapacity; CapacityString.Append(string.Format("+{0}GB", CurrentCapacity)); } } return string.Format("{0}GB ({1})", Capacity, CapacityString.ToString().TrimStart('+', ' ')); } /// <summary> /// 获取操作系统信息 /// </summary> /// <returns></returns> public static string getOsInfo() { StringBuilder sb_os = new StringBuilder(); if (Environment.Is64BitOperatingSystem) sb_os.Append("64Bit "); else sb_os.Append("32Bit "); RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion"); sb_os.Append(key.GetValue("ProductName")); //sb_os.Append(" "); //sb_os.Append(key.GetValue("CurrentVersion")); return sb_os.ToString(); } /// <summary> /// 获取处理器信息 /// </summary> /// <returns></returns> public static string getProcessorInfo() { StringBuilder sb_processor = new StringBuilder(); if (Environment.Is64BitProcess) sb_processor.Append("64Bit "); else sb_processor.Append("32Bit "); sb_processor.Append(Environment.ProcessorCount + "cores "); RegistryKey key = Registry.LocalMachine.OpenSubKey(@"HARDWARE\DESCRIPTION\System\CentralProcessor\0"); sb_processor.Append(key.GetValue("ProcessorNameString")); return sb_processor.ToString(); } /// <summary> /// 获取显卡信息 /// </summary> /// <returns></returns> public static string getVideoCardInfo() { ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(@"root\CIMV2", "SELECT * FROM Win32_VideoController"); string string_gpu = ""; foreach (ManagementObject info in searcher1.Get()) { string_gpu += "+" +info["Caption"].ToString(); } return string_gpu.Substring(1); } }一下代码获取CPU的占用率,以及各个核的占用率。
PerformanceCounter pc = new PerformanceCounter("Processor", "% Processor Time", "_Total");//通过pc.NextValue可以获取CPU占用率的值 PerformanceCounter[] counters = new PerformanceCounter[System.Environment.ProcessorCount]; for (int i = 0; i < counters.Length; i++) { counters[i] = new PerformanceCounter("Processor", "% Processor Time", i.ToString()); }
相关文章推荐
- c# 学习笔记一 值类型和引用类型
- 第九讲 C#异常处理
- C#后台执行bat
- C#关键字,explicit和implicit
- .net入门第一部分之c#基础1
- C#中制作MDI窗体
- C#调用DLL文件时参数对应表
- 约瑟夫环C#解决方法
- 用C#生成不重复的随机数
- C#保留小数位数的方法
- C#配合利用XML文件构建反射表机制
- 检测Office是否安装以及获取安装 路径 及安装版本 QQ,迅雷,旺旺 C#代码
- C# 客户端判断是否安装office03、07或WPS
- c# MACD 算法实现
- c#音乐播放器(欣赏)
- C#子线程创建新窗体心得(对Windows窗体控件进行线程安全调用)
- C#实现多线程讲解
- C# 内存管理和指针
- 【C#】编码史记
- C#删除程序自身【总结】