跳转到主要内容
HWID Checker
hwidhow-towindows

如何在 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.Management NuGet 包。

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 CheckerValidate(验证)标签页以确认其格式,或使用 Parse(解析)标签页查看其结构。

请记住:浏览器无法读取这些真实的序列号。我们的网页工具生成的是浏览器指纹。如果你需要通过类似网页的界面获取真实的硬件 ID,桌面工具可以原生地读取这些值。