1

作为机器识别系统的一部分,我正在寻找 Win32_DiskDrive 的签名。现在在两个客户的机器上,我看到这个字段有一个随机值。我认为这是由于没有检查随附代码中的 HRESULT。

什么会导致机器没有有效的签名?

WQL 查询:SELECT Caption、DeviceID、Signature、TotalSectors FROM Win32_DiskDrive

更新:

现在已经在 3 台机器上看到了这种情况,一台在中国,一台在东欧,一台在加拿大。当我说它返回一个随机值时,我的意思是它每次被查询时都会返回一个不同的随机值。等待客户尝试使用 diskpart 并查看请求 uniqueid 时显示的内容。

4

1 回答 1

1

我找不到确定签名为空的方法。

我的解决方案是遍历磁盘驱动器的分区

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 回答