本文へスキップ
HWID Checker
hwidhow-towindows

WindowsでHWIDを確認する方法

Windows 10および11で実際のハードウェア識別子(マザーボードのシリアル、ディスクのシリアル、MACアドレス、MachineGuid)を読み取るためのステップバイステップのコマンドを紹介します。

HWID Checker · 2026年8月10日 · 1 分で読めます

単一の「唯一のHWID」というものはありません。どのハードウェア属性をソフトウェアが読み取るかによって異なります。このガイドでは、Windows上で最も便利なコマンドを紹介し、ブラウザーフィンガープリントだけでなく本物のハードウェア識別子を見つけられるようにします。

プライバシーに関する注意: これらの値は実際のシリアル番号です。公開フォーラムに貼り付けたり、信頼できない相手に送信したりしないでください。

Windows

PowerShellまたはコマンドプロンプトを開き、これらを1つずつ実行します。

マザーボードのシリアル番号

wmic baseboard get serialnumber

Windows 11 24H2の注意: wmicはMicrosoftによって削除されました。上記のコマンドでエラーが出る場合は、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を読み取る

マシンを識別する必要があるソフトウェアを開発している場合、以下に3つの言語での最小限の例を示します。それぞれがいくつかのハードウェア識別子を読み取り、それらをハッシュ化して1つのフィンガープリントにまとめます。

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を返します。複合フィンガープリントの1つのコンポーネントとしては有用ですが、それ単独でマシンを一意に識別するには十分ではありません。

エッジケース(VM検出、汎用シリアル、クロスプラットフォーム対応)のない本番環境向けソリューションについては、プロジェクトリポジトリを参照してください。

取得した値の使い方

値を取得したら、HWID Checker検証タブに貼り付けてフォーマットを確認するか、解析タブで構造を確認します。

注意: ブラウザーはこれらの実際のシリアルを読み取れません。当社のWebツールは代わりにブラウザーフィンガープリントを生成します。Webスタイルのインターフェースから本物のハードウェアIDが必要な場合は、デスクトップツールがこれらの値をネイティブに読み取ります。