读取 CPU 型号信息:Windows 注册表与 Linux /proc/cpuinfo 方法汇总

CPU 型号信息(如 12th Gen Intel(R) Core(TM) i5-12400)的唯一真实来源是 CPUID 指令,操作系统在启动时读取 CPUID 并将结果缓存到系统结构中,之后所有查询都从这份缓存中读取。

Windows:注册表路径

CPU 信息存放在:

HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0

关键字段:

键名示例值
ProcessorNameString12th Gen Intel(R) Core(TM) i5-12400
VendorIdentifierGenuineIntel
~MHz2500

命令行查询:

reg query "HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0"

wmic 查询(更简洁):

wmic cpu get name

导出整个 CentralProcessor 分支:

reg export "HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor" cpu.reg

regedit 图形界面: 导航到上述路径 → 右键 → 导出。

Python 读取注册表

import winreg

key_path = r"HARDWARE\DESCRIPTION\System\CentralProcessor\0"
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path)

cpu_name, _ = winreg.QueryValueEx(key, "ProcessorNameString")
vendor, _ = winreg.QueryValueEx(key, "VendorIdentifier")
mhz, _ = winreg.QueryValueEx(key, "~MHz")

print(cpu_name)   # 12th Gen Intel(R) Core(TM) i5-12400

Linux:/proc/cpuinfo

cat /proc/cpuinfo | grep "model name" | head -1
# model name : 12th Gen Intel(R) Core(TM) i5-12400

lscpu | grep "Model name"
# Model name: 12th Gen Intel(R) Core(TM) i5-12400

/proc/cpuinfo 是内核动态生成的虚拟文件,每次读取都从内核的 cpu_info 结构体生成,本质是 CPUID 的解析结果。

Python 读取:

with open('/proc/cpuinfo') as f:
    for line in f:
        if line.startswith('model name'):
            print(line.split(':')[1].strip())
            break

注意:注册表信息可以被伪装

注册表里的 CPU 信息不是”唯一可信来源”:

  • 虚拟机(VMware/VirtualBox/Hyper-V)可以在配置中修改 CPUID 返回值
  • 驱动层可以拦截并修改 WMI 查询结果

因此注册表/WMI 读取的 CPU 型号可能与物理 CPU 不一致,这是虚拟化平台的常见行为。

各方法对比

方法平台特点
wmic cpu get nameWindows最简单
reg queryWindows可脚本化
winreg (Python)Windows程序读取
lscpuLinux格式化输出
/proc/cpuinfoLinux原始详情