作为机器识别系统的一部分,我正在寻找Win32_DiskDrive的签名。现在,在两个客户的机器上,我看到这个字段具有随机值。我认为这是因为没有检查出货代码中的HRESULT。
什么会导致机器没有有效签名?
WQL查询:SELECT Caption,DeviceID,Signature,TotalSectors FROM Win32_DiskDrive
更新:
现在已有3台机器出现,一台在中国,一台在东欧,一台在加拿大。当我说它返回一个随机值时,我的意思是它每次查询时都返回一个不同的随机值。等待客户尝试使用diskpart,并在请求uniqueid时查看它的内容。
答案 0 :(得分:1)
我找不到确定Signature为空的方法。
我的解决方案是遍历磁盘驱动器的分区
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的签名相匹配。