跳转到主要内容
HWID Checker

如何在 Windows、macOS 和 Linux 上查找 HWID

使用当前适用的 Windows、macOS 和 Linux 命令查看 SMBIOS UUID、MachineGuid、硬件序列号等标识符,并理解每个值究竟标识什么。

HWID Checker · 2026年8月10日 · 2 分钟阅读

如果游戏、软件厂商或 IT 管理员要求你提供 HWID(硬件 ID),先确认对方需要哪个字段和什么格式。不存在每台电脑都保存的通用 HWID。这个词可能指 SMBIOS UUID、物理硬盘序列号、Windows 安装标识符,也可能指某个产品使用多个值生成的专用设备指纹。

因此,一条命令即使返回了真实数据,也未必是对方需要的标识符。如果固件或虚拟化平台没有提供有效值,查询结果还可能是空白、全零或通用占位符。

隐私提示: UUID、序列号和安装 ID 都可能属于敏感信息。如果对方只需要一个字段,不要公开完整报告。

Windows:优先使用 PowerShell CIM

在受支持的 Windows 10 和 Windows 11 系统上,应使用 PowerShell CIM cmdlet 查询公开固件和设备信息的 WMI 类。以下命令都是只读操作,通常不需要管理员权限。

# SMBIOS 系统 UUID
Get-CimInstance Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID

# BIOS 序列号
Get-CimInstance Win32_BIOS | Select-Object -ExpandProperty SerialNumber

# 主板序列号
Get-CimInstance Win32_BaseBoard | Select-Object -ExpandProperty SerialNumber

# 物理硬盘型号和序列号
Get-CimInstance Win32_DiskDrive | Select-Object Model, SerialNumber

Win32_ComputerSystemProduct 返回的 UUID 来自 SMBIOS 的 System Information 结构。它的设计用途是标识一台机器,但数据质量取决于设备厂商或虚拟化平台。全零 UUID、重复的参考值,以及 Default string、To Be Filled By O.E.M. 等文本都是占位符,不能作为可靠的唯一标识。

WMIC 去哪里了?

旧教程经常使用:

wmic csproduct get uuid

微软已经弃用 wmic.exe 命令行工具,当前的 Windows 11 安装可能不再包含它。消失的是 WMIC 工具,不是 WMI 管理基础设施;Get-CimInstance 通过受支持的 PowerShell 接口查询同一套数据。只有在维护本来就带有 WMIC 的旧系统时才应继续使用它,不必为了旧教程重新安装。

MachineGuid 标识的是系统安装,而不是硬件

Windows 将 MachineGuid 存储在这里:

reg query "HKLM\SOFTWARE\Microsoft\Cryptography" /v MachineGuid

也可以用 PowerShell 读取同一个值:

Get-ItemPropertyValue "HKLM:\SOFTWARE\Microsoft\Cryptography" -Name MachineGuid

MachineGuid 标识一套 Windows 安装。部分应用会将它用作许可或设备识别的一个输入,另一些应用完全不用它。它不是主板序列号,也不能证明当前系统运行在某一台特定的实体电脑上。重新安装、系统镜像、克隆和某些恢复流程可能会更换或复制这个值。

设备管理器显示的是 PnP 硬件 ID

在设备管理器中打开某个设备的属性,进入详细信息并选择硬件 ID,会看到类似 PCI\VEN_8086&DEV_... 的值。这些是 Plug and Play 标识字符串,主要用于为设备匹配驱动程序包。

它们通常描述设备型号、厂商、子系统和修订版本,同型号设备可能共享完全相同的值。不要把 PnP 硬件 ID 与设备序列号、设备实例 ID 或整机 HWID 混为一谈。

macOS 标识符

最不容易产生歧义的起点是查看完整硬件报告:

system_profiler SPHardwareDataType

以下命令不依赖 system_profiler 的界面语言,可以直接读取平台 UUID 和 Mac 序列号:

ioreg -rd1 -c IOPlatformExpertDevice | awk -F'= ' '/IOPlatformUUID/{gsub(/"/,"",$2); print $2}'
ioreg -rd1 -c IOPlatformExpertDevice | awk -F'= ' '/IOPlatformSerialNumber/{gsub(/"/,"",$2); print $2}'

查询网络地址前,先确认硬件端口对应哪个接口名:

networksetup -listallhardwareports
ifconfig en0 | awk '/ether/{print $2}'

将 en0 替换为需要查询的接口。当前显示的地址不一定是出厂 MAC:Wi-Fi 隐私地址、虚拟网卡和硬件更换都会改变软件看到的值。

Linux 标识符

Linux 同时提供安装级标识和固件级标识:

# 操作系统安装或主机环境 ID,不是硬件序列号
cat /etc/machine-id

# SMBIOS 系统 UUID,通常需要 root 权限
sudo dmidecode -s system-uuid

# 物理块设备以及它们公开的序列号
lsblk --nodeps -o NAME,MODEL,SERIAL

# 网络接口及其当前链路层地址
ip link show

/etc/machine-id 通常在安装或首次启动时生成。更换硬件不一定改变它,错误克隆系统镜像却可能让多台机器拥有相同的值。systemd 文档将原始 machine-id 视为机密信息;应用应该派生自身专用的标识符,而不是将原始值发送给不可信服务。

dmidecode 读取固件表。在容器中可能无法使用;在虚拟机中,它通常返回虚拟机的 UUID,而不是宿主服务器的物理身份。

虚拟机、云桌面与瘦客户端盒子

桌面上放着一台实体盒子,并不代表 Windows 就直接运行在这台盒子里。学校和办公室经常使用瘦客户端或迷你主机,连接到运行在其他服务器上的 VDI 或云桌面。

如果看到 QEMU HARDDISK、Red Hat VirtIO、VMware 设备或 Hyper-V 虚拟网卡,说明操作系统看到的是虚拟硬件。在这种环境中:

  • SMBIOS UUID 可能由虚拟机管理程序分配、从模板复制,或者全为零;
  • 硬盘序列号属于虚拟磁盘,不是服务器物理 SSD 的序列号;
  • MAC 地址属于虚拟网卡,重建虚拟机时可能变化;
  • 主板、机箱和内存序列号可能为空或是通用值;
  • 报告标识的是当前客户机环境,不一定是桌面上的终端盒子。

这不表示查询失败,而是操作系统被允许看到的信息本来就有限。

Windows 便携报告与项目专用哈希

如果想把 Windows 能读取的值集中到一份本地报告中,可以下载 Windows 版 HWID Checker。这是无需安装的 x64 便携工具,支持:

hwid-checker.exe -save
hwid-checker.exe -json
hwid-checker.exe -no-hash

工具只读取系统在本地公开的数据,并且只有使用 -save 时才写入文件。空结果会被省略,但当前版本仍可能显示通用固件占位符或全零 UUID。hashed hwid sha256 是本项目根据采集到的非空字段生成的摘要。它不是 EXE 文件的 SHA-256 校验值,不是通用 HWID,也不保证与某款游戏、反作弊系统或许可厂商使用的标识符一致。

调查变化时应比较原始字段,而不能只看最终哈希。安装 ID、网卡、虚拟设备以及查询结果的排列顺序都可能改变。

你真正需要的是哪个值?

对方要求的值它标识什么重要限制
SMBIOS UUID固件或虚拟机的系统记录可能为空、通用、重复或由虚拟机管理程序分配
BIOS/主板序列号OEM 固件记录零售主板和虚拟机经常返回占位符
物理硬盘序列号操作系统可见的存储设备虚拟磁盘和 USB 桥接器可能返回合成值或空值
MachineGuid一套 Windows 安装重新安装或克隆镜像时可能改变或重复
/etc/machine-idLinux 安装或主机环境原始值具有敏感性,不是物理硬件序列号
MAC 地址当前呈现给系统的网络接口可能因隐私设置、虚拟化或更换网卡而变化
PnP 硬件 ID用于匹配驱动的设备系列同型号设备通常会共享
厂商 HWID某个产品定义的设备指纹只有该厂商知道使用哪些输入和变化规则

别人要求提供 HWID 时,应索要示例格式或使用该产品给出的官方命令。另一个值即使看起来很唯一,也不会因此变得兼容。

给软件开发者的设计建议

生产级许可系统不应简单拼接几个序列号,然后将结果视为永久身份。它需要确定性的排序和规范化、过滤已知占位符、明确处理缺失字段,并为合理的硬件更换、克隆镜像、隐私控制和虚拟机制定规则。

SHA-256 可以避免在普通输出中直接暴露原始字符串,但不能让不稳定或重复的输入变得稳定、唯一。更可靠的做法是使用应用专用的注册 ID,保护服务端账户状态,并且只将硬件证据作为一个风险信号。详见软件许可如何使用 HWID。

检查格式,但不要夸大结果的证明力

在线 HWID Checker可以识别常见格式、标记全零占位符,并将某个值与用户提供的列表进行比较。处理完全在浏览器中完成,不会上传输入数据。

通过格式检查只表示字符串在结构上看起来合理。它不能证明该值来自真实硬件、属于某台特定电脑,也不能证明第三方服务会接受它。

主要技术资料