La función para las unidades, creo que te iría mejor esta:
Código Delphi
[-]function GetLogicalDriveStrings(nBufferLength: DWORD; lpBuffer: PAnsiChar): DWORD; stdcall;
Aquí hay un ejemplo de como obtener todas las letras de las unidades usando esta función:
http://www.swissdelphicenter.ch/torr...ode.php?id=562
Lo de los permisos, ahora mismo no sabría que decirte.
Saludos.