![]() |
Schreiben mit TRegistry funktioniert nicht
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 ![]() Hier mein aktueller Testcode:
Delphi-Quellcode:
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}'
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 "); 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? |
AW: Schreiben mit TRegistry funktioniert nicht
Ist dein Kompilat 32-bit? Wenn ja, dann schau mal in HKLM\Software\Wow6432Node\Microsoft\....
Grüße Dalai |
AW: Schreiben mit TRegistry funktioniert nicht
Lesestoff bei der Gelegenheit:
![]() ![]() |
AW: Schreiben mit TRegistry funktioniert nicht
Ja ist 32-Bit. Danke für den Hinweis. Da gibt es tatsächlich ein '{61EF0826-A2B7-4EA7-AB55-C828D8D79985}'.
Und mit KEY_WOW64_64KEY ist es dann auch am von mir gewünschten Ort. :thumb: |
AW: Schreiben mit TRegistry funktioniert nicht
Aus der Hilfe für
![]() Zitat:
Delphi-Quellcode:
Nach dem OpenKey ist der aktuelle Schlüssel auf rootkey gesetzt. Da rootkey aber ein relativer Schlüssel ist, wird bei dem CreateKey der doppelte rootkey-Schlüssel verwendet.
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.'); Richtig wäre:
Delphi-Quellcode:
if not reg.OpenKey(rootkey, True)
then raise EInvalidOpException.Create('Uninstall registry key not found.'); key := AGuid; if not reg.CreateKey(key) then raise EInvalidOpException.Create('Cannot create uninstall registry key.'); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz