Found this, seems to work OK for me.
Code:Private Sub Command2_Click() Dim wmiDiskDrive As Object Dim wmiDiskDrives As Object Dim wmiDiskPartition As Object Dim wmiDiskPartitions As Object Dim wmiLogicalDisk As Object Dim wmiLogicalDisks As Object Dim wmiServices As Object Dim wmiQuery As String ' Get physical disk drive Letter Set wmiServices = GetObject( _ "winmgmts:{impersonationLevel=Impersonate}!//" & ".") Set wmiDiskDrives = wmiServices.ExecQuery("SELECT Caption, DeviceID FROM Win32_DiskDrive") For Each wmiDiskDrive In wmiDiskDrives Debug.Print "Disk drive Caption: " _ & wmiDiskDrive.Caption _ & vbNewLine & "DeviceID: " _ & " (" & wmiDiskDrive.DeviceID & ")" wmiQuery = "ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" _ & wmiDiskDrive.DeviceID & "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition" Set wmiDiskPartitions = wmiServices.ExecQuery(wmiQuery) 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 Debug.Print "Drive letter associated" _ & " with disk drive = " _ & wmiDiskDrive.Caption _ & wmiDiskDrive.DeviceID _ & vbNewLine & " Partition = " _ & wmiDiskPartition.DeviceID _ & vbNewLine & " is " _ & wmiLogicalDisk.DeviceID Next Next Next End Sub




Reply With Quote