Hola,
Puedes intentar con este procedimiento:
Código Delphi
[-]Procedure Unitats(Var l:TStringList);
var i:Word; k:Char; s:String;
begin for k:='a' to 'z' do begin try s:=k+':';
i := GetDriveType(PChar(s));
if i=DRIVE_REMOVABLE then l.Add(String(k));
except end;
end;
end;
Si miras en la ayuda la función GetDriveType puedes detectar más tipos de unidades (fijas, de red, etc.)