前几天闲着没事,想做一个显示电脑硬件信息的小窗体看看,网上看到了不少方法,最多的是利用wmi获取硬件信息
WMI,是Windows 2K/XP管理系统的核心;对于其他的Win32操作系统,WMI是一个有用的插件。WMI以CIMOM为基础,CIMOM即公共信息模型对象管理器(Common Information Model Object Manager),是一个描述操作系统构成单元的对象数据库,为MMC和脚本程序提供了一个访问操作系统构成单元的公共接口。有了WMI,工具软件和脚本程序访问操作系统的不同部分时不需要使用不同的API;相反,操作系统的不同部分都可以插入WMI,如图所示,工具软件和WMI可以方便地读写WMI。----引自百度百科
看了不少前辈写的一些方法后,自己凑了一下,写了这个类,使用起来还比较方便
using System;
using System.Collections.Generic;
using System.Management;
namespace HardwareInfo_test.HardClass
{
public class PCInfo
{
private static string getInfo(string parameter, string command)
{
String MyInfo = "";
ManagementObjectSearcher MySearcher =
new ManagementObjectSearcher("SELECT * FROM " + command);
if(MySearcher.Get().Count>0)
{
foreach (ManagementObject MyObject in MySearcher.Get())
{
MyInfo += MyObject[parameter] + "|";
}
MyInfo = MyInfo.Remove(MyInfo.LastIndexOf("|"));
}
return MyInfo;
}
/// <summary>
/// 物理内存总大小(byte)
/// </summary>
/// <returns></returns>
public static string GetTotalPhysicalMemory()
{
string parameter = "TotalPhysicalMemory";
string command = "Win32_LogicalMemoryConfiguration";
return getInfo(parameter, command);
}
// LogicalMemoryConfiguration
//{
// uint32 AvailableVirtualMemory; //可用虚拟内存
// string Caption;
// string Description;
// string Name;
// string SettingID;
// uint32 TotalPageFileSpace; //页面文件总数
// uint32 TotalPhysicalMemory; //物理内存总数
// uint32 TotalVirtualMemory; //虚拟内存总数
//};
/// <summary>
/// 可用物理内存(byte)
/// </summary>
/// <returns></returns>
public static string GetFreePhysicalMemory()
{
string parameter = "FreePhysicalMemory";
string command = "Win32_OperatingSystem";
return getInfo(parameter, command);
}
/// <summary>
/// CPU使用百分比(%)
/// </summary>
/// <returns></returns>
public static string GetCpuUsedPercents()
{
string parameter = "LoadPercentage";
string command = "Win32_Processor";
return getInfo(parameter, command);
}
/// <summary>
/// CPU名称
/// </summary>
/// <returns></returns>
public static string GetCpuName()
{
string parameter = "Name";
string command = "Win32_Processor";
return getInfo(parameter, command);
}
/// <summary>
/// CPU出厂商
/// </summary>
/// <returns></returns>
public static string GetCpuManufacturer()
{
string parameter = "Manufacturer";
string command = "Win32_Processor";
return getInfo(parameter, command);
}
/// <summary>
/// CPU最大时钟频率(既主频,单位为MB)
/// </summary>
/// <returns></returns>
public static string GetCpuMaxClockSpeed()
{
string parameter = "MaxClockSpeed";
string command = "Win32_Processor";
return getInfo(parameter, command);
}
/// <summary>
/// CPU地址宽度(32、64)
/// </summary>
/// <returns></returns>
public static string GetCpuAddressWidth()
{
string parameter = "AddressWidth";
string command = "Win32_Processor";
return getInfo(parameter, command);
}
/// <summary>
/// CPU数据宽度
/// </summary>
/// <returns></returns>
public static string GetCpuDataWidth()
{
string parameter = "DataWidth";
string command = "Win32_Processor";
return getInfo(parameter, command);
}
/// <summary>
/// CPU外部频率
/// </summary>
/// <returns></returns>
public static string GetCpuExtClock()
{
string parameter = "ExtClock";
string command = "Win32_Processor";
return getInfo(parameter, command);
}
/// <summary>
/// CPU当前电压(单位为0.1V)
/// </summary>
/// <returns></returns>
public static string GetCpuCurrentVoltage()
{
string parameter = "CurrentVoltage";
string command = "Win32_Processor";
return getInfo(parameter, command);
}
/// <summary>
/// CPU二级缓存
/// </summary>
/// <returns></returns>
public static string GetCpuL2CacheSize()
{
string parameter = "L2CacheSize";
string command = "Win32_Processor";
return getInfo(parameter, command);
}
/// <summary>
/// 硬盘容量信息
/// </summary>
/// <returns></returns>
public static string GetDiskSize()
{
string parameter = "Size";
//parameter = "";
string command = "Win32_DiskDriver";
return getInfo(parameter, command);
}
/**/
/// <summary>
/// 查询硬盘编号
/// </summary>
/// <returns></returns>
public string GetMainHardDiskId()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
String hardDiskID = "";
foreach (ManagementObject mo in searcher.Get())
{
hardDiskID = mo["SerialNumber"].ToString().Trim();
break;
}
return hardDiskID;
}
}
}