USB-Hardware-ID auslesen

    • Offizieller Beitrag

    Hi,
    ich habe ein Skript zum USB-Drive managen erstellt (Manage USB-Drives per devcon.exe).
    Grundlegend gehe ich dabei so vor:
    - Removable Laufwerke ermitteln
    - aus Registry die Caption dieser Laufwerke ermitteln (nun hab ich Lw-Buchstabe und Name)
    - mit devcon.exe Caption und Hardware-ID der Instanz USB ermitteln
    - Lw-Buchstabe und Name mit Hardware-ID zusammenführen durch Abgleich des Namens
    Das klappt auch - bis auf den Fall, dass 2 Sticks desselben Herstellers im PC stecken. Die haben dann oft auch dieselbe Caption. 8|
    Somit wird auch die Hardware-ID nicht zuverlässig zugeordnet.
    Ich hab bis jetzt noch keine andere Möglichkeit entdeckt, die Hardware-ID direkt dem Lw-Buchstaben getreu auszulesen. Bin für jede Anregung dankbar. :rolleyes:

    OK - hat sich erledigt. Ich hatte mich mal wieder im Registry-Dschungel verirrt. :D
    Hab den Schlüssel gefunden. Nun kann ich das Skript deutlich vereinfachen.

  • Hi

    kannst du mit dem was anfangen?

    [autoit]

    $ComputerName = "."
    $wmiServices = ObjGet("winmgmts:{impersonationLevel=Impersonate}!//" & $ComputerName)
    $wmiUsbDevice = $wmiServices.ExecQuery("SELECT * FROM Win32_USBControllerDevice")
    For $USBDevice In $wmiUsbDevice
    $wmiDiskDrive = $wmiServices.ExecQuery("ASSOCIATORS OF {Win32_PnPEntity.DeviceID=" & StringTrimLeft($USBDevice.Dependent, StringInStr($USBDevice.Dependent, "=")) & "} WHERE ResultClass = Win32_DiskDrive")
    For $DiskDrive In $wmiDiskDrive
    $wmiDiskPartitions = $wmiServices.ExecQuery("ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" & $DiskDrive.DeviceID & "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition")
    For $DiskPartition In $wmiDiskPartitions
    $wmiLogicalDisks = $wmiServices.ExecQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" & $DiskPartition.DeviceID & "'} WHERE AssocClass = Win32_LogicalDiskToPartition")
    For $LogicalDisk In $wmiLogicalDisks
    ConsoleWrite($USBDevice.Dependent & @LF & _
    $DiskDrive.Caption & @LF & _
    $DiskDrive.DeviceID & @LF & _
    $DiskPartition.DeviceID & @LF & _
    $LogicalDisk.DeviceID & @LF & @LF)
    Next
    Next
    Next
    Next

    [/autoit]

    lgE