Einzelnen Beitrag anzeigen

freimatz

Registriert seit: 20. Mai 2010
1.384 Beiträge
 
Delphi 11 Alexandria
 
#1

Schreiben mit TRegistry funktioniert nicht

  Alt 30. Okt 2020, 10:14
Hallo zusammen,
ich möchte in die Registry schreiben und zwar in den Pfad 'Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wi ndows\CurrentVersion\Uninstall'.

Inzwischen habe ich es geschafft mein Programm mit Adminstratoren zu starten, aber wenn ich mit regedit schaue steht da nichts drin.
Hier mein aktueller Testcode:
Delphi-Quellcode:
procedure CreateUninstaller(const AGuid, AExe, AVersion, AInstallDate, AUninstallString: String);
const rootkey = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall';
var
  reg: TRegistry; key: String;
begin
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_LOCAL_MACHINE;
    reg.Access := KEY_WRITE;

    if not reg.OpenKey(rootkey, True)
    then raise EInvalidOpException.Create('Uninstall registry key not found.');

    key := rootkey + '\' + AGuid;

    if not reg.CreateKey(key)
    then raise EInvalidOpException.Create('Cannot create uninstall registry key.');

    if not reg.OpenKey(key, True)
    then raise EInvalidOpException.Create('Uninstall key not found.');

    reg.WriteString('UninstallString', AUninstallString); //exe + " / uninstallprompt ");
In der letzten Zeile ist laut Debugger reg.FCurrentPath wie folgt: 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninsta ll\SOFTWARE\Microsoft\Windows\CurrentVersion\Unins tall\{61EF0826-A2B7-4EA7-AB55-C828D8D79985}'

Wenn ich dann mit regedit schaue gibt es unter den key 'Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wi ndows\CurrentVersion\Uninstall' keinen Eintrag mit '{61EF0826-A2B7-4EA7-AB55-C828D8D79985}'.
Bei dem reg.WriteString kommt aber auch keine exception.
Habe ich ein Brett vor dem Kopf?
  Mit Zitat antworten Zitat