Einzelnen Beitrag anzeigen

Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

Registry: 2 OpenKeys, nur der 1. funktioniert, warum?

  Alt 30. Apr 2013, 14:13
Betriebssystem: Win XP,Win 7
Schönen guten Tag,

ich versuche mit dem unten dargestellten Code, den Virenscanner von Symantec (SAV oder SEP) zu ermitteln. Wir haben nur Windows XP und 7 64bit im Einsatz.

Getestet habe ich auf meinem Windows 7 64bit Rechner. Die ersten beiden Keys existieren und ich würde erwarten, dass er in beide Ifs hineingeht.
Das 1. If macht er super aber dann ignoriert er alles was danach kommt, obwohl es existiert. Bin mit meinem Latein am Ende.
Delphi-Quellcode:
function GetSAVParentServer : String;
var
 av_name, av_parentserver, sResult : String;
 reg : TRegistry;
begin
 av_name := '';
 av_parentserver := '';
 Result := '';

 reg := TRegistry.Create(KEY_READ);
 with reg do
 begin
   Rootkey:=HKEY_LOCAL_MACHINE;

   // SEP
   if OpenKey('SOFTWARE\Symantec\Symantec Endpoint Protection\SMC', False) then
   begin
     try
       if ValueExists('ProductVersion') then
         if ReadString('ProductVersion') <> 'then
           av_name := 'SEP';
     except
       av_name := '';
     end;
     CloseKey;
   end;

   // SEP : Parent Server
   if OpenKey('SOFTWARE\Symantec\Symantec Endpoint Protection\SMC\SYLINK\SyLink', False) then
   begin
     try
       av_parentserver := ReadString('LastServerIP');
     except
       av_parentserver := '';
     end;
     CloseKey;
   end;

   // SAV
   if (OpenKey('SOFTWARE\Symantec\InstalledApps', False)) and (av_name = '') then
   begin
     try
       if KeyExists('SAVCE') then
         if ReadString('SAVCE') <> 'then
           av_name := 'SAV';
     except
       av_name := '';
     end;
     CloseKey;
   end;

   // SAV : Parent Server
   if OpenKey('SOFTWARE\Intel\LANDesk\VirusProtect6\CurrentVersion', False) then
   begin
     try
       av_parentserver := ReadString('Parent');
     except
       av_parentserver := '';
     end;
     CloseKey;
   end;
 end;
 reg.Free;

 sResult := '';
 if av_name <> 'then
   sResult := av_name;

 if sResult <> 'then
 begin
   if av_parentserver <> 'then
     sResult := sResult + ' - ' + av_parentserver;
 end
 else
   sResult := av_parentserver;

 Result := sResult;
end;
Danke im Voraus.
Sven
  Mit Zitat antworten Zitat