Вот один метод, который мне подходит (в Windows XP и Vista) для получения буквы диска подключенных USB-устройств:
require 'win32ole'
wmi = WIN32OLE.connect("winmgmts://")
volumes = wmi.ExecQuery("Select DeviceID from Win32_LogicalDisk where DriveType = 2")
volumes.each do |volume|
puts(volume.DeviceID)
end