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?