无法在C#中获取CPU序列号

Ari*_*MAZ 1 c# system

我试图获取CPU序列号,但我不能这样做.我可以得到板和硬盘但不是cpu.

这是我的代码如下.我究竟做错了什么?

public static void GetClientComputerInfo()
    {
        HDDSerial = "0";
        BoardSerial = "0";
        CPUSerial = "0";

        try
        {
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_DiskDrive");

            foreach (ManagementObject share in searcher.Get())
            {
                foreach (PropertyData PC in share.Properties)
                {
                    if (PC.Name == "SerialNumber")
                    {
                        HDDSerial = PC.Value.ToString();
                    }

                    if (PC.Name == "SerialNumber")
                    {
                        BoardSerial = PC.Value.ToString();
                    }

                    if (PC.Name == "ProcessorID")
                    {
                        CPUSerial = PC.Value.ToString();
                    }
                }
            }
        }
        catch
        {

        }
    }
Run Code Online (Sandbox Code Playgroud)

nav*_*ejr 5

试试这个吧

 string cpuInfo = string.Empty;
    ManagementClass mc = new ManagementClass("win32_processor");
    ManagementObjectCollection moc = mc.GetInstances();

    foreach (ManagementObject mo in moc)
    {
         cpuInfo = mo.Properties["processorID"].Value.ToString();
         break;
    }
Run Code Online (Sandbox Code Playgroud)

代码从这里提取

  • 如果有多个,Foreach / break将抢占第一个值,但如果集合为空,则防止索引超出范围异常。如果较旧的系统不提供值,并且您猜测[0]存在,则可能会发生这种情况。 (2认同)