在日常工作中,我们通过获取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 编辑过