C# 提供了ManagementClass類來獲取本機的一些基本信息,比如CPU的個數,CPU的頻率,網卡的MAC,內存的大小,硬盤的大小等。
獲取本機MAC地址:
/// <summary>
/// 獲取本機的MAC地址
/// </summary>
/// <returns></returns>
public static string GetMACString()
{
ManagementClass mAdapter = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection mo = mAdapter.GetInstances();
foreach (ManagementBaseObject m in mo)
{
if ((bool)m["IpEnabled"] == true)
{
return m["MacAddress"].ToString();
}
}
mo.Dispose();
return null;
}
獲取本機CPU的個數:
/// <summary>
/// 獲取CPU的個數
/// </summary>
/// <returns></returns>
public static int GetCpuCount()
{
try
{
using (ManagementClass mCpu = new ManagementClass("Win32_Processor"))
{
ManagementObjectCollection cpus = mCpu.GetInstances();
return cpus.Count;
}
}
catch
{
}
return -1;
}
獲取本機CPU的頻率
/// <summary>
/// 獲取CPU的頻率 這里之所以使用string類型的數組,主要是因為cpu的多核
/// </summary>
/// <returns></returns>
public static string[] GetCpuMHZ()
{
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection cpus = mc.GetInstances();
string[] mHz = new string[cpus.Count];
int c = 0;
ManagementObjectSearcher mySearch = new ManagementObjectSearcher("select * from Win32_Processor");
foreach (ManagementObject mo in mySearch.Get())
{
mHz[c] = mo.Properties["CurrentClockSpeed"].Value.ToString();
c++;
}
mc.Dispose();
mySearch.Dispose();
return mHz;
}
獲取本機硬盤的大小
/// <summary>
/// 獲取硬盤的大小
/// </summary>
/// <returns></returns>
public static string GetSizeOfDisk()
{
ManagementClass mc = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moj = mc.GetInstances();
foreach (ManagementObject m in moj)
{
return m.Properties["Size"].Value.ToString();
}
return "-1";
}
獲取本機內存的大小:
/// <summary>
/// 獲取內存的大小
/// </summary>
/// <returns></returns>
public static string GetSizeOfMemery()
{
ManagementClass mc = new ManagementClass("Win32_OperatingSystem");
ManagementObjectCollection moc = mc.GetInstances();
double sizeAll = 0.0;
foreach (ManagementObject m in moc)
{
if (m.Properties["TotalVisibleMemorySize"].Value != null)
{
sizeAll += Convert.ToDouble(m.Properties["TotalVisibleMemorySize"].Value.ToString());
}
}
mc = null;
moc.Dispose();
return sizeAll.ToString();
}
本程序是使用VS2005編寫的,可運行。
ManageMentClass 對象被實例化時,根據初始化參數的不同能夠獲取不同的本地信息:"Win32_NetworkAdapterConfiguration" 獲取本機網絡適配器對象。據此可以獲取網絡地址等。"Win32_DiskDiver" 獲取本機硬盤的相關信息,"Win32_Processor" 獲取本機CPU相關的信息。"Win32_OperatingSystem" 獲取內存等相關信息。

