【问题标题】:cannot get CPU serial number in C#无法在 C# 中获取 CPU 序列号
【发布时间】:2014-08-15 11:18:52
【问题描述】:

我正在尝试获取 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
        {

        }
    }

【问题讨论】:

  • 您正在尝试获取序列号,但您的 if 语句的 CPU 部分正在检查 if (PC.Name == "ProcessorID")?
  • @Thewads:PC.Name 会随着每次 foreach 迭代而变化。
  • Win32_DiskDrive 不提供处理器 ID。您可以使用“Select * FROM WIN32_Processor”来搜索处理器ID。

标签: c# system


【解决方案1】:

试试这个

 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;
    }

代码提取自here

【讨论】:

  • foreach 循环中的这个“中断”有意义吗?
  • 对我来说 ManagementObjectCollection 包含 2 个值,但两者都是相同的。老实说,我不知道为什么它有 2 个值。我认为这取决于 CPU 的核心数。在这种情况下不需要 foreach。但是如果你想打印所有的值,我会在 for 循环中放置一个控制台输出而不会中断。
  • 如果有多个值,Foreach/break 将获取第一个值,但如果集合为空,则防止索引超出范围异常。如果旧系统不提供值并且您猜测 [0] 存在,则可能会发生这种情况。
猜你喜欢
  • 1970-01-01
  • 2012-12-11
  • 2011-05-12
  • 1970-01-01
  • 2011-06-01
  • 2010-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多