Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Adobe Registry prüfen (https://www.delphipraxis.net/39958-adobe-registry-pruefen.html)

Ajintaro 9. Feb 2005 14:12


Adobe Registry prüfen
 
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?

shmia 9. Feb 2005 14:23

Re: Adobe Registry prüfen
 
Kuckst du:
http://www.delphipraxis.net/internal...ct.php?t=46381

Ajintaro 9. Feb 2005 15:42

Re: Adobe Registry prüfen
 
Cool Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz