磁盘签名的随机值

时间:2012-11-28 18:35:30

标签: wmi disk disk-partitioning wql

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

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

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

更新:

现在已有3台机器出现,一台在中国,一台在东欧,一台在加拿大。当我说它返回一个随机值时,我的意思是它每次查询时都返回一个不同的随机值。等待客户尝试使用diskpart,并在请求uniqueid时查看它的内容。

1 个答案:

答案 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的签名相匹配。