Я хочу получить серийные номера всех физических жестких дисков (а не серийные номера дисков) и разделы, присутствующие на них.
На самом деле я использовал реализацию из DISKID32, чтобы получить серийные номера всех жестких дисков, но это не даст разделы на жестком диске, поэтому я планировал использовать другой метод.
Приведенный ниже код дает получение серийного номера физического жесткого диска, а также поиск разделов на каждом жестком диске.
ComputerName = "."
Set wmiServices = GetObject ( _
"winmgmts:{impersonationLevel=Impersonate}!//" _
& ComputerName)
' Get physical disk drive
Set wmiDiskDrives = wmiServices.ExecQuery ( _
"SELECT * FROM Win32_DiskDrive")
For Each wmiDiskDrive In wmiDiskDrives
MsgBox "Disk drive Caption: " _
& wmiDiskDrive.Caption _
& VbNewLine & "DeviceID: " _
& " (" & wmiDiskDrive.DeviceID & ")"
MsgBox "Serial number" _
& wmiDiskDrive.SerialNumber
'Use the disk drive device id to
' find associated partition
query = "ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" _
& wmiDiskDrive.DeviceID & "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition"
Set wmiDiskPartitions = wmiServices.ExecQuery(query)
For Each wmiDiskPartition In wmiDiskPartitions
'Use partition device id to find logical disk
Set wmiLogicalDisks = wmiServices.ExecQuery _
("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" _
& wmiDiskPartition.DeviceID & "'} WHERE AssocClass = Win32_LogicalDiskToPartition")
For Each wmiLogicalDisk In wmiLogicalDisks
MsgBox "Drive letter associated" _
& " with disk drive = " _
& wmiDiskDrive.Caption _
& wmiDiskDrive.DeviceID _
& VbNewLine & " Partition = " _
& wmiDiskPartition.DeviceID _
& VbNewLine & " is " _
& wmiLogicalDisk.DeviceID
Next
Next
Next
Он отлично работает в Windows 8. Но когда я тестировал компьютер с Windows XP, я получил ошибку при получении серийного номера, то есть wmiDiskDrive.SerialNumber. Все остальные объекты исправно работают.
Затем я обнаружил, что это свойство недоступно в Windows XP, Windows Server 2003 и т. Д. Теперь из приведенного выше кода я могу получить номер модели жесткого диска и его разделы, но мне нужен серийный номер.
Итак, как я могу получить серийный номер жесткого диска и его разделы (должны работать во всех ОС Windows)? Любая идея?