WindowsのハードウェアIDを取得する方法・コマンド例

WindowsでハードウェアIDを取得したい

▼ ハードウェアIDに求められる条件

  • ハードウェアごとに固有で不変なID
  • 何があっても絶体に変わらないID
  • 特殊な方法を使わない
  • 普通のコマンドから取得可能

この取得にはいくつか方法があります。

僕も含めて知らない人が多いと思うので、
自分用メモとして方法・コマンドをまとめました。

MACアドレスはハードウェアIDとは呼べない?

真っ先に思う付くのがMACアドレスです。

でもこれはハードウェアIDではありません。

▼ MACアドレスとは?の分かりやすい解説

MACアドレス(マック・アドレス、英語: Media Access Control address)とは、Media Access Controlにおいて、ネットワークインタフェースを識別するために使用される識別子である。OSI参照モデルでいえば、第2層(データリンク層)にあたる。原則として全てのネットワーク機器に一意に割り当てられるが、様々な要因で例外が存在する。

引用元 : https://ja.wikipedia.org/wiki/MAC%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9

全てのネットワーク機器に割り当てらるIDのこと

でも気になることが最後に書いてあります。

「様々な要因で例外が存在する。」

この例外というのが曲者です。

▼ MACアドレスが不変ではない例

  • 仮想マシンなどを使っている場合
  • ソフトウェア的に変更された場合

実は不変ではなくソフト的にも変更できます。

だからハードウェアIDには少し不適格です。

ここでのハードウェアIDの定義とは

だから以下の条件に当てはまるもの、

それをハードウェアIDと定義します。

  • Windowsごとに固有であること
  • 首尾一貫して不変性が保証されるもの
  • 最低でもソフト的に変更できないこと

少なくともソフト的に変更できたら意味ありません。

固有かつ不変のUUIDである必要があります。ただしWindows以外のOS(Linux・Darwin・他OS)との固有性は考えないものとし、飽くまでWindows間でユニークという意味です。

その取得には2つの方法があります。

方法1.ハードウェアIDをwmicコマンドで取得

1つ目の方法はwmicコマンドを使う方法

次のようなコマンドから取得可能です。

▼ wmicコマンドからハードウェアID取得の例

上記コマンド例だったら 12345678-9ABC-0000-1234-1234567890AB の部分がそれです。ちょうど 8桁-4桁-4桁-4桁-12桁 というUUID形式を持っています。

手軽で楽な方法かもしれません。

ただしWidnows10以降でwmicコマンドは使用不可?

でもこの方法は少し心配なところがあって……

Windows11以降では使えない恐れありです。

▼ 公式での発表

WMI コマンド ライン (WMIC) ユーティリティは、Windows 10、バージョン 21H1、および Windows Server の 21H1 半期チャネル リリース時点で非推奨とされます。 このユーティリティは、WMI のWindows PowerShellに置き換えられます (「第 7 章? WMI の使用」を参照)。 この非推奨は、WMI コマンド ライン (WMIC) ユーティリティにのみ適用されます。Windows管理インストルメンテーション (WMI) 自体は影響を受けません。

引用元 : https://learn.microsoft.com/ja-jp/windows/win32/wmisdk/wmic

非推奨だから削除ではない模様

Win10・Win11以降でも問題なく使える。もし個人的にWindowsのハードウェアIDが知りたいだけなら、wmicコマンドを使えばOKです。

削除されるまでは使うことが可能です。

方法2.ハードウェアIDをpowershellから取得

こちらの方法が確実です。

ハードウェアIDをpowershell経由で取得

▼ 実際に次のようなコマンドで取得可能

返ってくるIDはさっきのwmicコマンドと同じ。

ハードウェアごとに重複しない不変のIDです。

▼ ちなみにpowershellのWMIコマンドレットについて

Windows PowerShellは、既定でWindows PowerShellで使用できる一連のコマンドレットを介して WMI 機能を実装します。 これらのコマンドレットを使用して、ローカル コンピューターとリモート コンピューターを管理するために必要なエンドツーエンドのタスクを完了できます。

引用元 : https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_wmi_cmdlets?view=powershell-5.1

従来のwmicコマンドは非推奨。

これからはpowershellを使うのが推奨されます。

このIDを取得して何かの役に立つの?

例えばこういう場面とか…

▼ Pythonで完全一意なハードウェアIDを取得する方法

ハードウエアを一意に識別したい時などです。

滅多にないけど役立つかもしれません。

WindowsでのハードウエアID取得のまとめ

以上、Win環境でのハードウエアID取得でした。

MACアドレスは一意とまでは呼べません。

だからwmicコマンドからUUID取得が確実です。
ただし非推奨だからpowershell経由という感じで…