在日常工作中,我們通過獲取PC配置信息來檢查硬件的兼容性、性能優(yōu)化、故障診斷、安全運(yùn)維、優(yōu)化用戶體驗(yàn)等,通過合理利用硬件信息,開發(fā)者可以顯著提升軟件穩(wěn)定性、安全性和用戶體驗(yàn)。獲取操作系統(tǒng)名稱
獲取操作系統(tǒng)類型
判斷系統(tǒng)是32位或是64位
獲取計(jì)算機(jī)名稱
獲取硬盤序號
獲取CPC ID
獲取物理內(nèi)存信息
獲取IPv4地址
測試IP是否暢通
1、獲取操作系統(tǒng)名稱
public 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"; }}
2、獲取操作系統(tǒng)類型
public 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"; }}
3、判斷系統(tǒng)是32位或是64位
public string CheckPCSystem(){ string RetStr = ""; if (IntPtr.Size == 4) { RetStr = "32"; } else if (IntPtr.Size == 8) { RetStr = "64"; } return RetStr;}
4、獲取計(jì)算機(jī)名稱
public string GetComputerName(){ try { string strPCName = string.Empty; ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { strPCName = mo["Name"].ToString(); } moc = null; mc = null; return strPCName; } catch { return "unknown"; }}
5、獲取硬盤序號
public 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"; }}
6、獲取CpuID
public 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"; }}
7、獲取物理內(nèi)存信息
public 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"; }}
8、獲取IPv4地址
public string GetClientLocalIPv4Address(){ try { string HostName = Dns.GetHostName(); IPHostEntry IpEntry = Dns.GetHostEntry(HostName); for (int i = 0; i < IpEntry.AddressList.Length; i++) { if (IpEntry.AddressList[i].AddressFamily == AddressFamily.InterNetwork) { string ipv4 = IpEntry.AddressList[i].ToString(); Regex r = new Regex("[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}"); Match mth = r.Match(ipv4); if (mth.Success && ipv4 != "127.0.0.1") { return IpEntry.AddressList[i].ToString(); } } } return ""; } catch (Exception) { return ""; }}
9、測試IP是否暢通
public bool PingSeverIPState(string ServerIp){ try { System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping(); System.Net.NetworkInformation.PingOptions options = new System.Net.NetworkInformation.PingOptions(); options.DontFragment = true; string data = "Test Data!"; byte[] buffer = Encoding.ASCII.GetBytes(data); int timeout = 2000; System.Net.NetworkInformation.PingReply reply = p.Send(ServerIp, timeout, buffer, options); if (reply == null || reply.Status == System.Net.NetworkInformation.IPStatus.Success) return true;
return false; } catch (System.Net.NetworkInformation.PingException) { return false; }}
閱讀原文:原文鏈接
該文章在 2025/8/4 18:01:08 編輯過