Mal wieder ist ein anderes Thema bzw. ein Problembericht der Auslöser für diesen Vorschlag, diesmal wegen The Windows Script Host is disabled. Im genannten Thema wird klar, dass WOU den 32 bit Zweig der Registry prüft wegen der erwähnten Redirection, während der Benutzer - sofern er es richtig* macht - im 64 bit Zweig nachschaut.
*) Das Richtigmachen ist ein eigenes Thema, das ich nicht weiter vertiefen will wegen der Untiefen des Windows OS .
Vorschlag: Im UpdateInstaller den Rootkey bei den Schlüsseln, bei denen es notwendig ist und die der Redirection unterliegen (HKLM\Software), auf den 64 bit Zweig setzen. AutoIt stellt dafür eine Möglichkeit bereit, auch wenn die etwas anders aussieht als in anderen Programmiersprachen. Beispiel, anhand des WSH-Zweigs:
- Code: Select all
; Registry constants
if (@OSArch == "X64") then
Global const $ROOTKEY = "HKLM64"
else
Global const $ROOTKEY = "HKLM"
EndIf
Dim Const $reg_key_wsh_hklm = $ROOTKEY & "\Software\Microsoft\Windows Script Host\Settings"
Ggf. muss man die Schlüssel einzeln prüfen, ob die Änderung bei jedem nötig ist. Normalerweise sollte es aber egal sein, weil sie gespiegelt bzw. automatisch synchronisiert werden (wie wohl im Falle des Schlüssels für WUAU/wuauserv oder auch PowerShell und IE).
Sollte angedacht sein, in Zukunft den UpdateInstaller auch als 64 Bit Kompilat zur Verfügung zu stellen, müsste die Bedingung etwas anders aussehen. Beispiel aus meinem Code-Fundus:
- Code: Select all
global const $X64REDIRECT = (@OSArch == "X64" AND NOT @AutoItX64)
if $X64REDIRECT then
Global const $ROOTKEY = "HKLM64"
else
...
Grüße
Dalai