![]() |
InnoSetup liest Registry-Wert nicht
Hallo,
bin etwas am verzweifeln. Ich möchte prüfen, ob die Edge-Runtime installiert ist. Delphi klappt das:
Code:
Temp enthält den Inhalt von 'pv'. Mit InnoSetup klappt das nicht, Ergebnis ist leer, obwohl ich sogar in SysWOW schaue
aRegistry := TRegistry.Create(KEY_QUERY_VALUE);
aRegistry.RootKey := HKEY_LOCAL_MACHINE; aRegistry.OpenKey('\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3C4FE00-EFD5-403B-9569-398A20F1BA4A}',false); Temp := aRegistry.ReadString('pv'); aRegistry.Free;
Code:
... und ich komme einfahc nicht drauf, wieso. Hat jemand einen Tipp für mich?
If not RegQueryStringValue(HKEY_LOCAL_MACHINE,'\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients\{F3C4FE00-EFD5-403B-9569-398A20F1BA4A}','pv', Temp) then
RegQueryStringValue(HKEY_LOCAL_MACHINE,'\SOFTWARE\Microsoft\EdgeUpdate\Clients\{F3C4FE00-EFD5-403B-9569-398A20F1BA4A}','pv', Temp); |
AW: InnoSetup liest Registry-Wert nicht
Läuft dein Delphi-Programm mit den gleichen Rechten wie das InnoSetup?
Ein "Als Administrator starten..." in denn Raum geworfen. Setups haben ja die Angewohnheit, mit erhöhten Rechten gestartet zu werden (müssen). Vielleicht "sieht" der ausführende User den Zweig gar nicht? Gehe im Registry-Baum ein paar Ebenen nach oben und lass dir ausgeben, was die RegQueryStringValue lesen kann. |
AW: InnoSetup liest Registry-Wert nicht
Hi,
Zitat:
|
AW: InnoSetup liest Registry-Wert nicht
Ist das (Inno)Setup 32-bit? Falls ja, nützt das Wow6432Node gar nichts bzw. ist sogar schädlich, weil dann aus Sicht des OS in HKLM\Software\Wow6432Node\Wow6432Node\... geschaut wird. Es wäre sowieso besser, auf Wow6432Node zu verzichten und stattdessen die passenden Flags zum Öffnen des Schlüssels (
![]() ![]() Grüße Dalai |
AW: InnoSetup liest Registry-Wert nicht
Zitat:
|
AW: InnoSetup liest Registry-Wert nicht
Schau mal mit Process Monitor nach, in welchem Zweig wirklich gelesen wird, und prüfe, ob das mit deinen Erwartungen übereinstimmt und ob das Lesen erfolgreich ist.
Grüße Dalai |
AW: InnoSetup liest Registry-Wert nicht
Peinlich peinlich, habe den Fehler gefunden. Nachdem ProcMon keinen Zugriff auf die Registry getrackt hat, habe ich mir den String angeschaut und siehe da ... Es war der führende Backslash.
Geht es in Delphi so
Code:
muss es im InnoSetup so ohne \ am Anfang erfolgen:
'\SOFTWARE\Microsoft\EdgeUpdate\...'
Code:
Und schon klappt es.
'SOFTWARE\Microsoft\EdgeUpdate\...'
|
AW: InnoSetup liest Registry-Wert nicht
Interessanter Fall :). Im Delphi geht es sowohl mit als auch ohne führenden Backslash.
Grüße Dalai |
AW: InnoSetup liest Registry-Wert nicht
Delphi erlaubt halt auch relative Keys (relativ zu CurrentKey/CurrentPath). Der Backslash am Anfang signalisiert dann einen absoluten Key. Das Weglassen funktioniert nur wenn CurrentPath leer ist. Intern wird der führende Backslash immer entfernt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 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