In einer D7-Anwendung möchte ich gerne lesend auf einen Key in der Registry zugreifen. Unter Win XP funktioniert das auch tadellos, nur unter Win 7 nicht, obwohl der Key laut regedit.exe definitiv vorhanden ist. Hier mein Code:
Delphi-Quellcode:
function TForm1.IsVCPPRuntimeInstalled: Boolean;
const
RegistryPfad = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\' +
'UserData\S-1-5-18\Products\b25099274a207264182f8181add555d0\InstallProperties';
var
Registry: TRegistry;
DisplayName: string;
DisplayVersion: string;
begin
Result := False;
Registry := TRegistry.Create;
try
Registry.RootKey := HKEY_LOCAL_MACHINE;
// prüfen, ob der Pfad auch wirklich existiert
if (Registry.OpenKeyReadOnly(RegistryPfad)) then
begin
// den Namen und die Version auslesen
DisplayName := Registry.ReadString('DisplayName');
DisplayVersion := Registry.ReadString('DisplayVersion');
if (AnsiUpperCase(DisplayName) = AnsiUpperCase('Microsoft Visual C++ 2005 Redistributable')) and
(DisplayVersion = '8.0.56336') then
begin
Result := True;
end;
end;
finally
FreeAndNil(Registry);
end;
end;
Was mache ich falsch? Das Registry.OpenKeyReadOnly schlägt fehl, auch wenn ich die Anwendung mit Administrator-Rechten ausführe.
Danke im Voraus für eure Hilfe!