在日常工作中,我们通过获取PC配置信息来检查硬件的兼容性、性能优化、故障诊断、安全运维、优化用户体验等,通过合理利用硬件信息,开发者可以显著提升软件稳定性、安全性和用户体验。获取操作系统名称
获取操作系统类型
判断系统是32位或是64位
获取计算机名称
获取硬盘序号
获取CPC ID
获取物理内存信息
获取IPv4地址
测试IP是否畅通
1、获取操作系统名称
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、获取操作系统类型
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、判断系统是32位或是64位
public string CheckPCSystem()
{
string RetStr = "";
if (IntPtr.Size == 4)
{
RetStr = "32";
}
else if (IntPtr.Size == 8)
{
RetStr = "64";
}
return RetStr;
}
4、获取计算机名称
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、获取物理内存信息
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 编辑过