Получение серийного номера производителя жесткого диска с WMI

Я хочу получить серийный номер производителя моего жесткого диска системы с использованием WMI в моем проекте C ++.

Я уже могу запросить SerialNumber из класса Win32_DiskDrive.
Тем не менее, это возвращает четыре серийных номера, потому что у меня есть четыре HDD. Я хочу знать только серийный номер жесткого диска моего системного диска, но я не могу отформатировать правильный запрос.

Кто-нибудь делал это раньше и знает, как построить этот запрос?

1

Решение

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


использование Win32_DiskPartition чтобы получить DiskIndex Свойство и использовать его для запроса Win32_DiskDrive с этими Index имущество.

Оба Uint32,

Это так ответ описывает способ получения DiskDrive, связанных с томами.

Также «Как я могу соотнести логические диски и физические диски» на TechNet может помочь

0

Другие решения

Сначала вы должны выяснить, какова ваша 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>'

Примечание: прогоните пару машин.

0

1. GetSystemDirectory () получает системный раздел. Например, C: \ Windows \ System32 и C: системный раздел.

2. Получить DiskIndex системного раздела из Win32_DiskPartition

3. Получите SerialNumber из Win32_DiskDrive, который DiskIndex является шагом 2

0
По вопросам рекламы [email protected]