WMIは、ほとんどのシステム情報をSMBIOSで取得します。この規格により、製造業者/ OEMはファームウェアを介して情報を提供することができます。
Win32_BIOSは、システム情報構造のシリアル番号に対応しています。これは2.0以上の標準で追加されていますので、まずボードがそれより古いかどうかを確認する必要があります。いずれにしても、コンピュータがOEMのものでない限り、通常は設定されません。
しかし、通常より多くの情報があります。ボードがSMBIOS 2.1以降をサポートしている場合、同じ構造体にUUIDがあります。いくつかのメーカーはそれらを埋めるわけではありませんが、私は他のメーカーよりも多くの成功を収めています。あなたが識別のために使用することができますSMBIOSでより多くの情報があります
wmic path win32_computersystemproduct get uuid
、理想的にあなたがそれそれのほとんどは、それはあなたができるゼロだ場合でも、それのすべてを兼ね備え必要があります。このUUIDは、それがWin32_board、Win32_ComputerSystemProductではないことに注意してください合理的な結果を得る。 GetSystemFirmwareTableを介してテーブルから値を取得することはできません。Windowsはその一部をゼロにします(これは.doc from Microsoftを参照)。
また、CPUIDを試してみることもできますが、PIIIの論争では、ほとんどのコンピュータではシリアル番号が有効になっていない(または全くサポートされていません)。 Win32_CPU WMIクラスのProcessorIDには、この値が与えられていないことに注意してください。it also comes from SMBIOS
要約すると、SerialNumber、UUID、プロセッサ識別、ハードディスクなどのSMBIOSと他のソース(MACアドレス、CPUID、Windows製品情報など)からできるだけ多くの値を取得しようとします。これが一意になるという保証はまだありません。
多くのPCシステムにはシステムBIOSにシステムシリアル番号が格納されていないことは承知していますか?HP、Dell、Lenovoなどのブランドメーカーではありませんが、 ? BIOS設定に進むときにシリアル番号が表示されますか? –
私はそれを知らなかった。 私が知っているように、それはBiosチップセットに依存しています。 私はベースボードとハードディスクのシリアル番号 を手に入れようとしても、それと同じ結果を返します。 私は使用したハードディスクシリアルを取得するためにWin32_BaseBoard、 を使用しました:Win32_DiskDrive –
マシンでWMIクエリをすばやく実行するには、 WMI Explorer](http://www.ks-soft.net/hostmon.eng/wmi/)を参照してください。あなたが作業している特定のマシンにアクセスできない場合、私はあなたをさらに助けることができないのではないかと恐れています。 –