在C#中,借助WMI(Windows Management Instrumentation)能够很方便地读取系统底层信息,比如CPU型号、内存容量以及实时的资源使用率。下面通过具体代码说明实现方式。

使用WMI获取CPU基本信息
通过System.Management命名空间下的ManagementObjectSearcher,可以执行WMI查询。以下代码用于获取CPU名称:
using System;
using System.Management;
class Program
{
static void Main()
{
// 查询Win32_Processor获取CPU信息
string query = "SELECT Name, LoadPercentage FROM Win32_Processor";
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
{
foreach (ManagementObject obj in searcher.Get())
{
Console.WriteLine("CPU名称: " + obj["Name"]);
// LoadPercentage为当前CPU平均负载
Console.WriteLine("CPU负载: " + obj["LoadPercentage"] + "%");
}
}
}
}
获取内存使用率
内存信息同样可以通过WMI从Win32_OperatingSystem中读取,包括总物理内存和可用内存,从而计算使用率:
using System;
using System.Management;
class MemoryInfo
{
public static void ShowMemory()
{
string query = "SELECT TotalVisibleMemorySize, FreePhysicalMemory FROM Win32_OperatingSystem";
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
{
foreach (ManagementObject obj in searcher.Get())
{
// 数值单位为KB
double total = Convert.ToDouble(obj["TotalVisibleMemorySize"]);
double free = Convert.ToDouble(obj["FreePhysicalMemory"]);
double used = total - free;
double percent = (used / total) * 100;
Console.WriteLine("内存使用率: " + percent.ToString("F2") + "%");
}
}
}
}
注意事项
- 使用WMI需要引用System.Management程序集,并在代码中添加using指令。
- WMI查询在部分受限账户下可能无权限,建议以管理员权限运行。
- 若需更高频率采样,可考虑搭配PerformanceCounter类以减少查询开销。
小结
通过上述方法,我们利用C#和WMI即可稳定获取CPU与内存的关键信息,适合用于轻量级的系统监控模块。