Hallo!
Jeder kennt den Adobe Acrobat Reader. Die Version 6.0 verlangt beim ersten Start das man die EULA akzeptiert, danach kann man den Acrobat Reader nutzen. Wenn man als Admin Adobe Acrobat installiert und sich dann als user ohne jegliche Rechte anmeldet, kann man den Acrobat Reader nur dann nutzen, wenn der Admin die EULA akzeptiert hat - ansonsten bekommt man eine Fehlermeldung.
Adobe Acrobat setzt den EULA Eintrag in 2 Stellen:
1. in HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader\6.0\
und
2. HKEY_CURRENT_USER\SOFTWARE\Adobe\Acrobat Reader\6.0\
in beiden Fällen muss der Schlüssel AdobeViewer vorhanden sein mit einem DWORD Wert "EULA" mit dem Integer 1 (1 = Akzeptiert nehmen ich an)
Meine Absicht ist es, das mir ein Button meines Delphi Programms auskunft darüber geben kann ob
a) Acrobat Reader laut Registry installiert ist
b) wenn installiert, wurde die EULA akzeptiert?
c) wenn nicht akzeptiert, bitte Registryeintrag an beiden Stellen setzen
Hier mein Code der nicht richtig funzt:
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
//
// ADOBE REGISTRY
//
procedure TFmain.SpeedButton4Click(Sender: TObject);
var regist_machine, regist_machine2, regist_user: TRegistry;
i: integer;
begin
regist_machine:=TRegistry.Create;
regist_machine.RootKey:=HKEY_LOCAL_MACHINE;
regist_machine2:=TRegistry.Create;
regist_machine2.RootKey:=HKEY_LOCAL_MACHINE;
regist_user:=TRegistry.Create;
regist_user.RootKey:=HKEY_CURRENT_USER;
////////////////////////////////////////////////////////////////////////////////
//
// HKEY_LOCAL_MACHINE
//
//Wenn der Schlüssel net existiert
if not regist_machine.OpenKey('SOFTWARE\Adobe\Acrobat Reader\6.0\', false) then
begin
//motzen
meldung('Adobe Acrobat Reader 6.0 Registrierungsschlüssel nicht gefunden!');
end else
//wenn der Schlüssel soweit exisitiert, weiterrpüfen ob "AdobeViewer" existiert
begin
if not regist_machine.OpenKey('SOFTWARE\Adobe\Acrobat Reader\6.0\AdobeViewer', false) then
begin
//existiert der Adobeviewer nicht, wurde die EULA noch nicht akzepiert!
if MessageDlg('Die EULA des Acrobat Readers wurde noch nicht akzeptiert. Jetzt freischalten?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
//prüfen ob wir den Schlüssel AdobeViewer anlegen können
if regist_machine.CreateKey('AdobeViewer') then
begin
//regist2 mit einem anderen Wert füllen
if not regist_machine2.OpenKey('SOFTWARE\Adobe\Acrobat Reader\6.0\AdobeViewer', false) then
begin
//motzen
hinweis('Konnte nicht auf SOFTWARE\Adobe\Acrobat Reader\6.0\AdobeViewer zugreifen');
exit;
end else
begin
regist_machine2.WriteInteger('EULA',1);
meldung('ok');
end;
end else
begin
meldung('konnte Schlüssel AdobeViewer nicht anlegen!');
end;
end;
end else
begin
hinweis('SOFTWARE\Adobe\Acrobat Reader\6.0\AdobeViewer existiert');
end;
end;
regist_machine.free;
regist_machine2.free;
end;
Also die Überprüfung ob der Schlüssel i.o. ist oder nicht klappt net, das Programm ist immer der Meinung das die EULA nicht akzeptiert wurde. Irgendwie klappt das net so wie ich mir das Vorstelle. Was mach ich falsch?