1. ホーム
  2. windows

[解決済み] ユニークなマシンIDを生成する

2022-11-18 01:58:29

質問

Windows OSが動作するマシンに対して一意なidを生成する関数を書く必要があります。

現在、私は WMI を使用してさまざまなハードウェア パラメータを照会し、それらを結合してハッシュ化し、一意の ID を導出しています。私の質問は、使用すべき推奨パラメーターは何かということです。 現在、私は、バイオスCDのデータの組み合わせを使用して、一意のIDを生成しています。そして、各測定基準について複数の結果がある場合、最初の結果を使用しています。

しかし、2 つの異なる Windows OS にデュアルブートするマシンが、理想的には起こらないはずの、各 OS で異なるサイト コードを生成するという問題に遭遇しました。

参考までに、私が現在使用している測定基準は以下のとおりです。

Win32_Processor:UniqueID,ProcessorID,Name,Manufacturer,MaxClockSpeed
Win32_BIOS:Manufacturer
Win32_BIOS:SMBIOSBIOSVersion,IdentificationCode,SerialNumber,ReleaseDate,Version
Win32_DiskDrive:Model, Manufacturer, Signature, TotalHeads
Win32_BaseBoard:Model, Manufacturer, Name, SerialNumber
Win32_VideoController:DriverVersion, Name

どのように解決するのですか?

をパースして SMBIOS を自分で解析し、任意の長さにハッシュ化します。詳しくは PDF 仕様 を参照してください。

Windows から SMBIOS 情報を照会するには、次のようにします。 EnumSystemFirmwareEntries , EnumSystemFirmwareTables そして GetSystemFirmwareTable .

IIRC では、CPUID 命令からの "unique id" は P3 およびそれ以降では非推奨です。