在日常工作中,我們通過獲取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 編輯過