Introduction

マシンの固有情報を取得する方法について調べている。
そのうち、SMBIOS (System Management BIOS) の UUID に注目しているが、仮想マシン上だとどうなるのか調べてみた。

普通に考えれば、ホストマシンの SMBIOS 情報なんて拾ってこないはずだが…

How to check?

SMBIOS の UUID を取得するプログラムを作った。

いや、取得するだけなら Powershell でも WMI でもできるが…プログラムから固有情報を取得できるようにしたかったのでこうなった。

下記は実行結果。

物理マシン上

DELL の Alienware Aurora R7 で実行。
一部伏字。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
> .\install\win\bin\Test.exe
SMBIOS version: 3.1
DMI Revision: 0
Total length: 5298
DMI at address: 000002007786F008

System Information (Type 1)
Manufacturer: Alienware
Product Name: Alienware Aurora R7
Version: 1.0.26
Serial Number: XXXXXXX
UUID: 44454c4c-5900-104d-8056-c3c04f365032
SKU Number: 0858
Family: Alienware

Hyper-V

上記 DELL マシン上の Hyper-V で確認。

1
2
3
4
5
6
7
8
9
10
11
12
> .\install\win\bin\Test.exe
SMBIOS version: 2.3
DMI Revision: 0
Total length: 17307
DMI at address: 000001E0942EC1D8

System Information (Type 1)
Manufacturer: Microsoft Corporation
Product Name: Virtual Machine
Version: 7.0
Serial Number: 3963-2292-0221-2888-3658-2649-24
UUID: 2e5d1f07-7b8c-7b42-8e6e-3d5316cd8512

Oracle VirtualBox

上記 DELL マシン上の VirtualBox 7 で確認。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
> .\install\win\bin\Test.exe
SMBIOS version: 2.5
DMI Revision: 0
Total length: 455
DMI at address: 00000162BD461438

System Information (Type 1)
Manufacturer: innotek GmbH
Product Name: VirtualBox
Version: 1.2
Serial Number: 0
UUID: 8e2454ae-9fe1-db4c-be41-d9652e9898da
SKU Number: Null String
Family: Virtual Machine

WMWare ESXi

DELL の Precision Tower 5810 上の ESXi 7 内の Windows 11 で実行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
> .\install\win\bin\Test.exe
SMBIOS version: 2.7
DMI Revision: 0
Total length: 10033
DMI at address: 000002435BA62A98

System Information (Type 1)
Manufacturer: VMware, Inc.
Product Name: VMware7,1
Version: None
Serial Number: VMware-56 4d 94 3d e9 01 b1 cb-08 77 bc 55 96 fb 96 4d
UUID: 564d943d-e901-b1cb-0877-bc5596fb964d
SKU Number: Null String
Family: Null String

Appendix

SMBIOS の UUID は下記の方法でも取得できる。

Windows Management Instrumentation

1
2
3
> wmic csproduct get uuid
UUID
4C4C4544-0059-4D10-8056-C3C04F365032

Powershell

1
2
> (Get-CimInstance -Class Win32_ComputerSystemProduct).UUID
4C4C4544-0059-4D10-8056-C3C04F365032

レジストリ

1
2
3
4
> reg query "HKEY_LOCAL_MACHINE\SYSTEM\HardwareConfig" /v LastConfig

HKEY_LOCAL_MACHINE\SYSTEM\HardwareConfig
LastConfig REG_SZ {4c4c4544-0059-4d10-8056-c3c04f365032}

Source Code

https://github.com/takuya-takeuchi/Demo/tree/master/Hardware/SMBIOS/Windows/01_Type1_SystemInformation