Как получить имена всех CDRom'ов, установленных в системе?
uses
..., Registry;
procedure GetAviableCDROM( ListCD: TStrings );
var
Reg: TRegistry;
Key, SubKey, TempKey: string;
i, KolCD: byte;
begin
Reg := TRegistry.Create;
with Reg do
try
RootKey := HKEY_LOCAL_MACHINE; // Здесь лежат имена ключей с информацией об установленных CDROM'ах
Key := 'SYSTEM\CurrentControlSet\Services\Cdrom\Enum'; SubKey := 'SYSTEM\CurrentControlSet\Enum\';
Access := KEY_READ; // На общих правах NT не пускает к этим ключам
if not OpenKey( Key, false ) then Exit; // Узнаем количество CDROM'ов
KolCD := ReadInteger( 'Count' );
if KolCD = 0 then Exit;
for i:=0 to KolCD-1 do
begin
OpenKey( Key, False );
TempKey := ReadString( IntToStr( i ) );
CloseKey;
if not OpenKey( SubKey + Tempkey, false ) then Break;
ListCD.Add( ReadString( 'FriendlyName' ) );
CloseKey;
end;
finally
Reg.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetAviableCDROM( Memo1.Lines );
end;
|