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.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を返します。複合フィンガープリントの1つのコンポーネントとしては有用ですが、それ単独でマシンを一意に識別するには十分ではありません。
エッジケース(VM検出、汎用シリアル、クロスプラットフォーム対応)のない本番環境向けソリューションについては、プロジェクトリポジトリを参照してください。
取得した値の使い方
値を取得したら、HWID Checkerの検証タブに貼り付けてフォーマットを確認するか、解析タブで構造を確認します。
注意: ブラウザーはこれらの実際のシリアルを読み取れません。当社のWebツールは代わりにブラウザーフィンガープリントを生成します。Webスタイルのインターフェースから本物のハードウェアIDが必要な場合は、デスクトップツールがこれらの値をネイティブに読み取ります。