USB Geräte erkennen und Laufwerk ermitteln

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von P-Velo.

    USB Geräte erkennen und Laufwerk ermitteln

    Hey zusammen

    Mein Ziel ist es den Laufwerksbuchstaben eines USB Gerätes zu ermitteln.
    Habe bereits folgenden Code gefunden welcher mir alle möglichen Eigenschaften des Gerätes ausliest:

    VB.NET-Quellcode

    1. Dim AllInformation As New List(Of String)
    2. Try
    3. Dim mos As ManagementObjectSearcher = New ManagementObjectSearcher("SELECT * FROM Win32_diskdrive where interfacetype = 'USB'")
    4. For Each mo As ManagementObject In mos.Get()
    5. For Each pd As PropertyData In mo.Properties
    6. AllInformation.Add(pd.Name.ToString & " : " & pd.Value.ToString)
    7. End If
    8. Next
    9. Next
    10. Catch ex As Exception
    11. End Try

    Angeschlossen ist mein Samsung Galaxy S1 I9000 (Als Wechseldatenträger) und ein EMTEC 8GB USB-Stick.
    Die Informationen sehen dann so aus:
    Spoiler anzeigen
    Samsung Galaxy - Interner Speicher

    Quellcode

    1. BytesPerSector : 512
    2. Capabilities : System.UInt16[]
    3. CapabilityDescriptions : System.String[]
    4. Caption : SAMSUNG GT-I9000 USB Device
    5. ConfigManagerErrorCode : 0
    6. ConfigManagerUserConfig : False
    7. CreationClassName : Win32_DiskDrive
    8. Description : Laufwerk
    9. DeviceID : \\.\PHYSICALDRIVE3
    10. FirmwareRevision : 0000
    11. Index : 3
    12. InterfaceType : USB
    13. Manufacturer : (Standardlaufwerke)
    14. MediaLoaded : True
    15. MediaType : Removable Media
    16. Model : SAMSUNG GT-I9000 USB Device
    17. Name : \\.\PHYSICALDRIVE3
    18. Partitions : 1
    19. PNPDeviceID : USBSTOR\DISK&VEN_SAMSUNG&PROD_GT-I9000&REV_0000\90008C221076&1
    20. SectorsPerTrack : 63
    21. Signature : 1
    22. Size : 6201861120
    23. Status : OK
    24. SystemCreationClassName : Win32_ComputerSystem
    25. SystemName : GSTDLEHRIEN-T
    26. TotalCylinders : 754
    27. TotalHeads : 255
    28. TotalSectors : 12113010
    29. TotalTracks : 192270
    30. TracksPerCylinder : 255

    Samsung Galaxy - Externe SD Card

    Quellcode

    1. BytesPerSector : 512
    2. Capabilities : System.UInt16[]
    3. CapabilityDescriptions : System.String[]
    4. Caption : SAMSUNG GT-I9000 Card USB Device
    5. ConfigManagerErrorCode : 0
    6. ConfigManagerUserConfig : False
    7. CreationClassName : Win32_DiskDrive
    8. Description : Laufwerk
    9. DeviceID : \\.\PHYSICALDRIVE2
    10. FirmwareRevision : 0000
    11. Index : 2
    12. InterfaceType : USB
    13. Manufacturer : (Standardlaufwerke)
    14. MediaLoaded : True
    15. MediaType : Removable Media
    16. Model : SAMSUNG GT-I9000 Card USB Device
    17. Name : \\.\PHYSICALDRIVE2
    18. Partitions : 1
    19. PNPDeviceID : USBSTOR\DISK&VEN_SAMSUNG&PROD_GT-I9000_CARD&REV_0000\90008C221076&0
    20. SectorsPerTrack : 63
    21. Signature : 1
    22. Size : 15924142080
    23. Status : OK
    24. SystemCreationClassName : Win32_ComputerSystem
    25. SystemName : GSTDLEHRIEN-T
    26. TotalCylinders : 1936
    27. TotalHeads : 255
    28. TotalSectors : 31101840
    29. TotalTracks : 493680
    30. TracksPerCylinder : 255

    EMTEC USB-Stick

    Quellcode

    1. BytesPerSector : 512
    2. Capabilities : System.UInt16[]
    3. CapabilityDescriptions : System.String[]
    4. Caption : USB DISK 2.0 USB Device
    5. ConfigManagerErrorCode : 0
    6. ConfigManagerUserConfig : False
    7. CreationClassName : Win32_DiskDrive
    8. Description : Laufwerk
    9. DeviceID : \\.\PHYSICALDRIVE1
    10. FirmwareRevision : PMAP
    11. Index : 1
    12. InterfaceType : USB
    13. Manufacturer : (Standardlaufwerke)
    14. MediaLoaded : True
    15. MediaType : Removable Media
    16. Model : USB DISK 2.0 USB Device
    17. Name : \\.\PHYSICALDRIVE1
    18. Partitions : 1
    19. PNPDeviceID : USBSTOR\DISK&VEN_&PROD_USB_DISK_2.0&REV_PMAP\079B1200CF63CF4D&0
    20. SectorsPerTrack : 63
    21. SerialNumber :
    22. Signature : 773201854
    23. Size : 8003197440
    24. Status : OK
    25. SystemCreationClassName : Win32_ComputerSystem
    26. SystemName : GSTDLEHRIEN-T
    27. TotalCylinders : 973
    28. TotalHeads : 255
    29. TotalSectors : 15631245
    30. TotalTracks : 248115
    31. TracksPerCylinder : 255



    Wie kann ich mit diesen Informationen den Laufwerksbuchstaben ausfindig machen?
    Und wenn nicht so, wie dann?

    Edit:
    Nach Anschluss der Geräte stecken sie in folgenden Laufwerken:
    G - Samsung Galaxy (Interner Speicher)
    F - Samsung Galaxy (Externer Speicher)
    H - EMTEC USB-Stick

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    Mit diesen Links habe ich bereits den vorherigen Code geschrieben, leider habe ich keine Möglichkeit gefunden den Laufwerksbuchstaben mit den anderen Eigenschaften ausfindig zu machen.

    Suche immernoch eine Lösung..

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    Das Problem liegt darin, diese Laufwerkinformationen den Geräteinformationen (oben im Expander) zuzuweisen.

    Ein Gerät wird mit der PNPNummer (glaub so hiess die) eindeutig identifiziert, jedoch weiss ich nicht wie ich das jeweilige Gerät dem Laufwerkbuchstaben zuordnen kann :/

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    DriveChangeWatcher.vb in deine Projektmappe einbinden....


    so werden die Laufwerke in eine Listbox angezeigt:

    VB.NET-Quellcode

    1. Private WithEvents myDriveWatcher As New DriveChangeWatcher(Me)
    2. Private Sub myDriveWatcher_DriveCoutChanged(ByVal sender As Object, ByVal e As System.IO.DriveInfo) Handles myDriveWatcher.DriveArrived
    3. listbox1.items.add(e.Name)
    4. End Sub



    hier ist noch ein Event:

    VB.NET-Quellcode

    1. Private Sub myDriveWatcher_DriveRemoved(ByVal sender As Object, ByVal e As System.IO.DriveInfo) Handles myDriveWatcher.DriveRemoved
    2. ListBox1.Items.Clear()
    3. End Sub
    Dateien