könnte auch schon ausreichen
Delphi-Quellcode:
procedure GetUninstallList(List: TStrings);
const
UninstallPath = '\Software\Microsoft\Windows\CurrentVersion\Uninstall';
DisplayName = 'DisplayName';
var
i: Integer;
begin
List.Clear;
with TRegistry.Create(KEY_READ) do
try
RootKey := HKEY_LOCAL_MACHINE;
if KeyExists(UninstallPath) and OpenKeyReadOnly(UninstallPath) then
GetKeyNames(List);
for i := List.Count - 1 downto 0 do
if OpenKeyReadOnly(UninstallPath + '\' + List[i]) and ValueExists(DisplayName) then
List[i] := ReadString(DisplayName);
else
List.Delete(i);
finally
Free;
end;
end;