Я хочу получить серийный номер производителя моего жесткого диска системы с использованием WMI в моем проекте C ++.
Я уже могу запросить SerialNumber из класса Win32_DiskDrive.
Тем не менее, это возвращает четыре серийных номера, потому что у меня есть четыре HDD. Я хочу знать только серийный номер жесткого диска моего системного диска, но я не могу отформатировать правильный запрос.
Кто-нибудь делал это раньше и знает, как построить этот запрос?
использование Win32_DiskPartition чтобы получить DiskIndex
Свойство и использовать его для запроса Win32_DiskDrive с этими Index
имущество.
Оба Uint32
,
Это так ответ описывает способ получения DiskDrive, связанных с томами.
Также «Как я могу соотнести логические диски и физические диски» на TechNet может помочь
Сначала вы должны выяснить, какова ваша SystemDrive
а затем запросить другую таблицу WMI, чтобы получить serialNumber
, WMI хранит серийный номер во многих таблицах, вам нужно сделать лучший выбор относительно того, какая таблица может удовлетворить ваш сценарий использования. Если serialNumber — ваш единственный вариант использования, тогда запрос Win32_LogicalDisk
Если нет, напишите комментарий, и мы можем работать оттуда 🙂
Select SystemDrive from Win32_OperatingSystem
Select VolumeSerialNumber FROM Win32_LogicalDisk where (DriveType = '2' or DriveType = '3') AND deviceid= '<SystemDrive>'
обновленный
Select Index from Win32_DiskPartition where BootPartition ='TRUE'
Select SerialNumber from Win32_DiskDrive where index='<Index>'
Примечание: прогоните пару машин.
1. GetSystemDirectory () получает системный раздел. Например, C: \ Windows \ System32 и C: системный раздел.
2. Получить DiskIndex системного раздела из Win32_DiskPartition
3. Получите SerialNumber из Win32_DiskDrive, который DiskIndex является шагом 2