Zistenie a zmena AudioCD autorun nastavenia

uses Registry;
 
function IsAudioCdAutoRunOn : bool;
var
  reg: TRegistry;
  Classes : string;
  ClassesRoot : string;
  i : integer;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  reg.OpenKey('SOFTWARE\Classes\AudioCD\Shell', False);
  Classes := reg.ReadString('');
  reg.CloseKey;
  reg.RootKey := HKEY_CLASSES_ROOT;
  reg.OpenKey('AudioCD\Shell', False);
  ClassesRoot := reg.ReadString('');
  reg.CloseKey;
  reg.free;
  for i := 1 to length(Classes) do
    Classes[i] := UpCase(Classes[i]);
  for i := 1 to length(ClassesRoot) do
    ClassesRoot[i] := UpCase(ClassesRoot[i]);
  result := ((Classes = 'PLAY') and (ClassesRoot = 'PLAY'));
end;
 
procedure SetAudioCdAutoRun(bOn : bool);
var
  reg: TRegistry;
  Classes : string;
  ClassesRoot : string;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  reg.OpenKey('SOFTWARE\Classes\AudioCD\Shell', False);
  if bOn then
    reg.WriteString('', 'play') else
    reg.WriteString('', '');
  reg.CloseKey;
  reg.RootKey := HKEY_CLASSES_ROOT;
  reg.OpenKey('AudioCD\Shell', False);
  if bOn then
    reg.WriteString('', 'play') else
    reg.WriteString('', '');
  reg.CloseKey;
  reg.free;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsAudioCdAutoRunOn then
    ShowMessage('Autorun Audio Cd is On') else
    ShowMessage('Autorun Audio Cd is Off');
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  SetAudioCdAutoRun(true);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  SetAudioCdAutoRun(false);
end;