Det er øjensynligt ikke helt let, men her er da et bud:
Imports System
Imports System.Management
Module Module1
Sub Main()
Dim objectQuery As ObjectQuery = New ObjectQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType = 2 AND Caption <> 'A:'")
Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher(objectQuery)
Dim removableDisk As ManagementObject
For Each removableDisk In searcher.Get()
Console.WriteLine("Caption : " & removableDisk("Caption"))
Console.WriteLine("DeviceID : " & removableDisk("DeviceID"))
Console.WriteLine("Name : " & removableDisk("Name"))
Next
End Sub
End Module
For at denne kode skal kunne kompilere, skal du endvidere have tilføjet System.Management under referencer (se ude i venstre side af din VS - hvis det er den du bruger).
Løsningen gør brug af WMI - specifikt af Win32_LogicalDisk:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_logicaldisk.asp- og jeg har her udtrukket de drev som er af DriveType=2 (= "Removable Disk") og som ikke er dit A-drev. Det giver dig dine USB-drev, men vil det også kunne give andet end USB? Det ved jeg faktisk ikke, men det giver i hvertfald ikke CDROM-drev eller netværksdrev.
Som du kan se kan man bruge Caption, DeviceID eller Name, og jeg ved heller ikke om der er tilfælde hvor den ene er mere korrekt end den anden.