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