1

マシン識別システムの一部として、Win32_DiskDrive の署名を探しています。現在、2 台の顧客のマシンで、このフィールドにランダムな値があることがわかりました。出荷されたコードで HRESULT をチェックしていないことが原因だと思います。

マシンが有効な署名を持たない原因は何ですか?

WQL クエリ: SELECT Caption、DeviceID、Signature、TotalSectors FROM Win32_DiskDrive

アップデート:

これは現在、中国、東ヨーロッパ、カナダの 3 台のマシンで確認されています。ランダム値を返すと言うときは、クエリを実行するたびに異なるランダム値を返すことを意味します。顧客が diskpart を試して、uniqueid が要求されたときに何が表示されるかを確認するのを待っています。

4

1 に答える 1

1

署名がnullであると判断する方法が見つかりませんでした。

私の解決策は、ディスクドライブのパーティションを反復処理することでした

wstring partionquery= L"ASSOCIATORS of {Win32_DiskDrive.DeviceID='";
partionquery += disk_deviceid;
partionquery += L"'} WHERE AssocClass = Win32_DiskDriveToDiskPartition";

Type値を取得し、「GPT」で始まるかどうかを確認します。始まる場合は、IOCTL_DISK_GET_PARTITION_INFO_EXを指定してDeviceIoControlを呼び出します。これにより、GPTパーティションのGUID署名が提供されます。

私のテストでは、各パーティションはディスク上で同じ署名を与え、diskpartでuniqueidとして示されている署名と一致します。

于 2012-12-12T15:29:37.533 に答える