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" 獲取內存等相關信息。