如何在 Windows 上查找你的 HWID
在 Windows 10 和 11 上读取真实硬件标识符(主板序列号、磁盘序列号、MAC 地址和 MachineGuid)的分步命令。
HWID Checker · 2026年8月10日 · 1 分钟阅读
并不存在唯一的一个"HWID"——它取决于某款软件读取的是哪个硬件属性。本指南展示 Windows 上最有用的命令,让你能找到真实的硬件标识符,而不仅仅是浏览器指纹。
隐私提示: 这些值是真实的序列号。不要将它们粘贴到公共论坛,也不要发送给任何你不信任的人。
Windows
打开 PowerShell 或命令提示符,并逐一运行以下命令。
主板序列号
wmic baseboard get serialnumber
Windows 11 24H2 注意:
wmic已被微软移除。如果上述命令报错,请改用 PowerShell CIM 版本:Get-CimInstance Win32_BaseBoard | Select-Object SerialNumber
系统(机器)GUID
Windows 在注册表中存储一个机器 GUID。许多许可系统都把这个值称为"HWID":
reg query "HKLM\SOFTWARE\Microsoft\Cryptography" /v MachineGuid
磁盘序列号
wmic diskdrive get serialnumber
PowerShell CIM 替代(24H2):
Get-CimInstance Win32_DiskDrive | Select-Object Model, SerialNumber
MAC 地址
getmac
SMBIOS UUID
wmic csproduct get uuid
PowerShell CIM 替代(24H2):
Get-CimInstance Win32_ComputerSystemProduct | Select-Object UUID
在你自己的代码中读取 HWID
如果你正在开发需要识别机器的软件,以下是三种语言的 minimal 示例。每个示例读取几个硬件标识符并哈希成单一指纹。
Go
package main
import (
"crypto/sha256"
"encoding/hex"
"fmt"
"os/exec"
"strings"
)
func main() {
uuid := run("wmic", "csproduct", "get", "uuid")
board := run("wmic", "baseboard", "get", "serialnumber")
disk := run("wmic", "diskdrive", "get", "serialnumber")
combined := strings.Join([]string{uuid, board, disk}, "|")
hash := sha256.Sum256([]byte(combined))
fmt.Println(hex.EncodeToString(hash[:]))
}
func run(name string, args ...string) string {
out, _ := exec.Command(name, args...).Output()
return strings.Join(strings.Fields(string(out)), " ")
}
C# (.NET)
using System.Management;
using System.Security.Cryptography;
using System.Text;
string cpu = new ManagementObjectSearcher("SELECT ProcessorId FROM Win32_Processor")
.Get().Cast<ManagementObject>().First()["ProcessorId"].ToString();
string board = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_BaseBoard")
.Get().Cast<ManagementObject>().First()["SerialNumber"].ToString();
string disk = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_DiskDrive")
.Get().Cast<ManagementObject>().First()["SerialNumber"].ToString();
string combined = $"{cpu}-{board}-{disk}";
byte[] hash = SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes(combined));
Console.WriteLine(Convert.ToHexString(hash));
注意:
System.Management在 .NET Core 3.1+ 和 .NET 5+ 上需要安装System.ManagementNuGet 包。
Python
import subprocess, hashlib, re
def wmi(query):
r = subprocess.run(["wmic"] + query.split(), capture_output=True, text=True)
return re.sub(r"\s+", "", r.stdout.strip())
uuid = wmi("csproduct get uuid")
board = wmi("baseboard get serialnumber")
disk = wmi("diskdrive get serialnumber")
fingerprint = hashlib.sha256(f"{uuid}-{board}-{disk}".encode()).hexdigest()
print(fingerprint)
关于 CPU ProcessorId 的说明:
wmic cpu get ProcessorId(或 CPUID 指令)返回的值编码了 CPU 的厂商、系列、型号和步进——它不是每颗芯片唯一的序列号。同型号的 CPU 返回相同的 ProcessorId。它适合作为复合指纹的一个组成部分,但不足以单独唯一标识一台机器。
如需无需处理边缘情况(VM 检测、通用序列号、跨平台支持)的生产级方案,请参阅项目仓库。
拿到这个值之后该怎么做
拿到一个值之后,将它粘贴到 HWID Checker 的 Validate(验证)标签页以确认其格式,或使用 Parse(解析)标签页查看其结构。
请记住:浏览器无法读取这些真实的序列号。我们的网页工具生成的是浏览器指纹。如果你需要通过类似网页的界面获取真实的硬件 ID,桌面工具可以原生地读取这些值。