das auflisten hab ich jetzt so hinbekommen:
Code:
procedure TForm1.Button1Click(Sender: TObject);
const
UNINST_PATH = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall';
var
Reg: TRegistry;
SubKeys: TStringList;
i: integer;
sDisplayName, sUninstallString: string;
begin
Reg := TRegistry.Create;
with Reg do
try
with Listbox1.Items do
try
BeginUpdate;
Clear;
RootKey := HKEY_LOCAL_MACHINE;
if OpenKeyReadOnly(UNINST_PATH) then
begin
SubKeys := TStringList.Create;
try
GetKeyNames(SubKeys);
CloseKey;
for i := 0 to subKeys.Count - 1 do
if OpenKeyReadOnly(Format('%s\%s', [UNINST_PATH, SubKeys[i]])) then
try
sDisplayName := ReadString('DisplayName');
sUninstallString := ReadString('UninstallString');
if sDisplayName <> '' then
begin
Listbox1.items.Add(sDisplayName);
Listbox1.items.Add(sUninstallString);
end;
finally
CloseKey;
end;
finally
SubKeys.Free;
end;
end;
finally
EndUpdate;
end;
finally
CloseKey;
Free;
end;
end;
leider zeigt es mir nur die namen und uninstaller.exe an...ich muss das noch ein wenig ferfeinern...aber vielleicht weiß jetzt jemand weiter. ich brauche auch die hauptanwendung der software..sowie den genauen pfad der uninstaller. also bei antivir 6.0 z.B. c:\programme\antivir\antivir.exe und c:\programme\antivir\antiviruninstall.exe (Beispiel)