Случайное значение для подписи диска

В рамках системы идентификации машины я ищу подпись Win32_DiskDrive. На машинах двух клиентов я видел, что это поле имеет случайное значение. Я предполагаю, что это связано с отсутствием проверки HRESULT в отгруженном коде.

Что может привести к тому, что у машины не будет действительной подписи?

WQL-запрос: ВЫБЕРИТЕ заголовок, DeviceID, подпись, TotalSectors FROM Win32_DiskDrive

Обновление:

Это было замечено на 3 машинах, одна в Китае, одна в Восточной Европе и одна в Канаде. Когда я говорю, что он возвращает случайное значение, я имею в виду, что каждый раз при запросе он возвращает другое случайное значение. Ожидание того, что клиент попробует diskpart и посмотрит, что он говорит, когда запрашивается уникальный идентификатор.


person Thomas    schedule 28.11.2012    source источник
comment
Интересно, это больше вопрос суперпользователя?   -  person Thomas    schedule 29.11.2012
comment
Проблема связана с GPT, а не со стилем разделов MBR. Более полный ответ дам, когда закончу работу над своей проблемой.   -  person Thomas    schedule 11.12.2012
comment
Хотя я понимаю, как можно подумать, что этот вопрос касается общего оборудования, я не вижу разницы между этим вопросом и любым вопросом SQL. WQL — это инструмент, используемый разработчиками для получения информации об используемой машине.   -  person Thomas    schedule 03.03.2015
comment
Кроме того, в stackoverflow уже есть много вопросов по WMI.   -  person Thomas    schedule 03.03.2015


Ответы (1)


Я не мог найти способ определить, что подпись была нулевой.

Мое решение состояло в том, чтобы перебирать разделы для диска.

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

Получите значение Type и посмотрите, начинается ли оно с «GPT», и если да, вызовите DeviceIoControl с помощью IOCTL_DISK_GET_PARTITION_INFO_EX. Это обеспечивает подпись GUID раздела GPT.

В моем тестировании каждый раздел дает одну и ту же подпись на диске, и она соответствует подписи, показанной как uniqueid в diskpart.

person Thomas    schedule 12.12.2012