I want to get all physical hard disk serial number(not volume serial number of drives) and partitions present in them.
Actually I used implementation from DISKID32 to get all hard disks serial number , but this will not give partitions in the hard disk.So I planned to use some other method.
Below code gives get serial number of physical hard disk and also find partitions in the each harddisks.
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
It works perfectly in windows 8. But when I test in windows XP pc I got error while getting serial number i.e wmiDiskDrive.SerialNumber . All other objects are properly working.
Then I found that this property is not available in windows XP,windows server 2003 etc. Now from above code I can get harddisk model number and the partitions in it,but I want serial number.
So how I can get hard disk serial number and their partitions( should work in all windows OS)? Any idea?
                        
This should solve your problem..