AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme Registry: 2 OpenKeys, nur der 1. funktioniert, warum?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Piro · begonnen am 30. Apr 2013 · letzter Beitrag vom 30. Apr 2013
Antwort Antwort
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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

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

  Alt 30. Apr 2013, 14:27
Wie ist es so?
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);
  try
    reg.Rootkey := HKEY_LOCAL_MACHINE;
    
    // SEP
    if reg.OpenKey('SOFTWARE\Symantec\Symantec Endpoint Protection\SMC', False) then
     try
       if reg.ValueExists('ProductVersion') then
         if reg.ReadString('ProductVersion') <> 'then
           av_name := 'SEP';
     finally
       reg.CloseKey;
     end;
    
    // SEP : Parent Server
    if reg.OpenKey('SOFTWARE\Symantec\Symantec Endpoint Protection\SMC\SYLINK\SyLink', False) then
     try
       av_parentserver := reg.ReadString('LastServerIP');
     finally
       reg.CloseKey;
     end;
    
    // SAV
    if reg.OpenKey('SOFTWARE\Symantec\InstalledApps', False) and (av_name = '') then
     try
       if reg.KeyExists('SAVCE') then
         if reg.ReadString('SAVCE') <> 'then
           av_name := 'SAV';
     finally
       reg.CloseKey;
     end;
    
    // SAV : Parent Server
    if reg.OpenKey('SOFTWARE\Intel\LANDesk\VirusProtect6\CurrentVersion', False) then
     try
       av_parentserver := reg.ReadString('Parent');
     finally
       reg.CloseKey;
     end;
     
  finally
    reg.Free;
  end;
  
  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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

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

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

  Alt 30. Apr 2013, 15:13
Das brachte keinen Erfolg.

Ich habe es so gelöst.
Delphi-Quellcode:
 // 32bit oder 64bit Lese Zugriff setzen
 if GetOSArchitecture = '32-Bitthen
   reg := TRegistry.Create(KEY_READ OR KEY_WOW64_32KEY)
 else
   reg := TRegistry.Create(KEY_READ OR KEY_WOW64_64KEY);
Kannte das Problem von einer anderen Aufgabenstellung. Mit 64bit Systemen ist etwas komplizierter.

Wenn einer noch eine andere Lösung. Würde Sie mich sehr interessieren.

Danke.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 30. Apr 2013, 15:19
Vielleicht interessant in dem Zusammenhang (auch mal den Links folgen): http://www.delphipraxis.net/86651-re...w6432node.html
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 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