1. 程式人生 > 實用技巧 >c#中如何獲取本機MAC地址、IP地址、硬碟ID、CPU序列號等系統資訊

c#中如何獲取本機MAC地址、IP地址、硬碟ID、CPU序列號等系統資訊

    /// 獲取本機使用者名稱、MAC地址、內網IP地址、公網IP地址、硬碟ID、CPU序列號、系統名稱、實體記憶體。  
    /// </summary>  
    public class GetSystemInfo  
    {  
        /// <summary>  
        /// 作業系統的登入使用者名稱  
        /// </summary>  
        /// <returns>系統的登入使用者名稱</returns>  
        public static string GetUserName()  
        {  
            
try { string strUserName = string.Empty; ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { strUserName
= mo["UserName"].ToString(); } moc = null; mc = null; return strUserName; } catch { return "unknown"; } } /// <summary> /// 獲取本機MAC地址
/// </summary> /// <returns>本機MAC地址</returns> public static string GetMacAddress() { try { string strMac = string.Empty; ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"] == true) { strMac = mo["MacAddress"].ToString(); } } moc = null; mc = null; return strMac; } catch { return "unknown"; } } /// <summary> /// 獲取本機的實體地址 /// </summary> /// <returns></returns> public static string getMacAddr_Local() { string madAddr = null; try { ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc2 = mc.GetInstances(); foreach (ManagementObject mo in moc2) { if (Convert.ToBoolean(mo["IPEnabled"]) == true) { madAddr = mo["MacAddress"].ToString(); madAddr = madAddr.Replace(':', '-'); } mo.Dispose(); } if (madAddr == null) { return "unknown"; } else { return madAddr; } } catch (Exception) { return "unknown"; } } /// <summary> /// 獲取客戶端內網IPv6地址 /// </summary> /// <returns>客戶端內網IPv6地址</returns> public static string GetClientLocalIPv6Address() { string strLocalIP = string.Empty; try { IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName()); IPAddress ipAddress = ipHost.AddressList[0]; strLocalIP = ipAddress.ToString(); return strLocalIP; } catch { return "unknown"; } } /// <summary> /// 獲取客戶端內網IPv4地址 /// </summary> /// <returns>客戶端內網IPv4地址</returns> public static string GetClientLocalIPv4Address() { string strLocalIP = string.Empty; try { IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName()); IPAddress ipAddress = ipHost.AddressList[0]; strLocalIP = ipAddress.ToString(); return strLocalIP; } catch { return "unknown"; } } /// <summary> /// 獲取客戶端內網IPv4地址集合 /// </summary> /// <returns>返回客戶端內網IPv4地址集合</returns> public static List<string> GetClientLocalIPv4AddressList() { List<string> ipAddressList = new List<string>(); try { IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName()); foreach (IPAddress ipAddress in ipHost.AddressList) { if (!ipAddressList.Contains(ipAddress.ToString())) { ipAddressList.Add(ipAddress.ToString()); } } } catch { } return ipAddressList; } /// <summary> /// 獲取客戶端外網IP地址 /// </summary> /// <returns>客戶端外網IP地址</returns> public static string GetClientInternetIPAddress() { string strInternetIPAddress = string.Empty; try { using (WebClient webClient = new WebClient()) { strInternetIPAddress = webClient.DownloadString("http://www.coridc.com/ip"); Regex r = new Regex("[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}"); Match mth = r.Match(strInternetIPAddress); if (!mth.Success) { strInternetIPAddress = GetClientInternetIPAddress2(); mth = r.Match(strInternetIPAddress); if (!mth.Success) { strInternetIPAddress = "unknown"; } } return strInternetIPAddress; } } catch { return "unknown"; } } /// <summary> /// 獲取本機公網IP地址 /// </summary> /// <returns>本機公網IP地址</returns> private static string GetClientInternetIPAddress2() { string tempip = ""; try { //http://iframe.ip138.com/ic.asp 返回的是:您的IP是:[220.231.17.99] 來自:北京市 光環新網 WebRequest wr = WebRequest.Create("http://iframe.ip138.com/ic.asp"); Stream s = wr.GetResponse().GetResponseStream(); StreamReader sr = new StreamReader(s, Encoding.Default); string all = sr.ReadToEnd(); //讀取網站的資料 int start = all.IndexOf("[") + 1; int end = all.IndexOf("]", start); tempip = all.Substring(start, end - start); sr.Close(); s.Close(); return tempip; } catch { return "unknown"; } } /// <summary> /// 獲取硬碟序號 /// </summary> /// <returns>硬碟序號</returns> public static string GetDiskID() { try { string strDiskID = string.Empty; ManagementClass mc = new ManagementClass("Win32_DiskDrive"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { strDiskID = mo.Properties["Model"].Value.ToString(); } moc = null; mc = null; return strDiskID; } catch { return "unknown"; } } /// <summary> /// 獲取CpuID /// </summary> /// <returns>CpuID</returns> public static string GetCpuID() { try { string strCpuID = string.Empty; ManagementClass mc = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { strCpuID = mo.Properties["ProcessorId"].Value.ToString(); } moc = null; mc = null; return strCpuID; } catch { return "unknown"; } } /// <summary> /// 獲取作業系統型別 /// </summary> /// <returns>作業系統型別</returns> public static string GetSystemType() { try { string strSystemType = string.Empty; ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { strSystemType = mo["SystemType"].ToString(); } moc = null; mc = null; return strSystemType; } catch { return "unknown"; } } /// <summary> /// 獲取作業系統名稱 /// </summary> /// <returns>作業系統名稱</returns> public static string GetSystemName() { try { string strSystemName = string.Empty; ManagementObjectSearcher mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT PartComponent FROM Win32_SystemOperatingSystem"); foreach (ManagementObject mo in mos.Get()) { strSystemName = mo["PartComponent"].ToString(); } mos = new ManagementObjectSearcher("root\\CIMV2", "SELECT Caption FROM Win32_OperatingSystem"); foreach (ManagementObject mo in mos.Get()) { strSystemName = mo["Caption"].ToString(); } return strSystemName; } catch { return "unknown"; } } /// <summary> /// 獲取實體記憶體資訊 /// </summary> /// <returns>實體記憶體資訊</returns> public static string GetTotalPhysicalMemory() { try { string strTotalPhysicalMemory = string.Empty; ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { strTotalPhysicalMemory = mo["TotalPhysicalMemory"].ToString(); } moc = null; mc = null; return strTotalPhysicalMemory; } catch { return "unknown"; } } /// <summary> /// 獲取主機板id /// </summary> /// <returns></returns> public static string GetMotherBoardID() { try { ManagementClass mc = new ManagementClass("Win32_BaseBoard"); ManagementObjectCollection moc = mc.GetInstances(); string strID = null; foreach (ManagementObject mo in moc) { strID = mo.Properties["SerialNumber"].Value.ToString(); break; } return strID; } catch { return "unknown"; } } /// <summary> /// 獲取公用桌面路徑 [csharp] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片 public static string GetAllUsersDesktopFolderPath() { RegistryKey folders; folders = OpenRegistryPath(Registry.LocalMachine, @"/software/microsoft/windows/currentversion/explorer/shell folders"); string desktopPath = folders.GetValue("Common Desktop").ToString(); return desktopPath; } /// <summary> /// 獲取公用啟動項路徑 /// </summary> public static string GetAllUsersStartupFolderPath() { RegistryKey folders; folders = OpenRegistryPath(Registry.LocalMachine, @"/software/microsoft/windows/currentversion/explorer/shell folders"); string Startup = folders.GetValue("Common Startup").ToString(); return Startup; } private static RegistryKey OpenRegistryPath(RegistryKey root, string s) { s = s.Remove(0, 1) + @"/"; while (s.IndexOf(@"/") != -1) { root = root.OpenSubKey(s.Substring(0, s.IndexOf(@"/"))); s = s.Remove(0, s.IndexOf(@"/") + 1); } return root; } [csharp] view plain copy 在CODE上檢視程式碼片派生到我的程式碼片 private void Test() { RegistryKey folders; folders = OpenRegistryPath(Registry.LocalMachine, @"/software/microsoft/windows/currentversion/explorer/shell folders"); // Windows使用者桌面路徑 string desktopPath = folders.GetValue("Common Desktop").ToString(); // Windows使用者字型目錄路徑 string fontsPath = folders.GetValue("Fonts").ToString(); // Windows使用者網路鄰居路徑 string nethoodPath = folders.GetValue("Nethood").ToString(); // Windows使用者我的文件路徑 string personalPath = folders.GetValue("Personal").ToString(); // Windows使用者開始選單程式路徑 string programsPath = folders.GetValue("Programs").ToString(); // Windows使用者存放使用者最近訪問文件快捷方式的目錄路徑 string recentPath = folders.GetValue("Recent").ToString(); // Windows使用者傳送到目錄路徑 string sendtoPath = folders.GetValue("Sendto").ToString(); // Windows使用者開始選單目錄路徑 string startmenuPath = folders.GetValue("Startmenu").ToString(); // Windows使用者開始選單啟動項目錄路徑 string startupPath = folders.GetValue("Startup").ToString(); // Windows使用者收藏夾目錄路徑 string favoritesPath = folders.GetValue("Favorites").ToString(); // Windows使用者網頁歷史目錄路徑 string historyPath = folders.GetValue("History").ToString(); // Windows使用者Cookies目錄路徑 string cookiesPath = folders.GetValue("Cookies").ToString(); // Windows使用者Cache目錄路徑 string cachePath = folders.GetValue("Cache").ToString(); // Windows使用者應用程式資料目錄路徑 string appdataPath = folders.GetValue("Appdata").ToString(); // Windows使用者列印目錄路徑 string printhoodPath = folders.GetValue("Printhood").ToString(); }</span>