Ich möchte, dass mein selbstextrahierendes 7-Zip-Archiv nach dem Extrahieren von Dateien ein PowerShell-Skript ausführt. Dazu verwende ich die hier beschriebene Methode: http://www.sphaero.org/blog:2011:0504_7zip_self_extracting_autostart_exe
Nach der Dateiextraktion möchte ich ein Powershell-Skript ausführen. Hier ist der Inhalt meiner Datei config.txt:
;!@Install@!UTF-8!
RunProgram="InstallCU.bat"
;!@InstallEnd@!
Die Datei InstallCU.bat startet PowerShell:
powershell.exe -ExecutionPolicy Unrestricted -File InstallCU.ps1
Innerhalb des Powershell-Skripts mache ich viele Dinge, einschließlich der Überprüfung einiger Registrierungsschlüssel unter diesem Zweig:
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components
Verwenden der cmd-lets Test-Path und Get-ItemProperty
Ich habe es nicht ausprobiert, aber ich denke, auf 32-Bit-Computern läuft alles gut.
Mein Problem ist, dass auf 64-Bit-Systemen eine 32-Bit-Version (x86) der PowerShell gestartet wird. Wenn ich auf einen Pfad in der Registrierung unter HKLM: \ Software darin zugreife, wird er zu HKLM: \ Software \ Wow6432Node \ umgeleitet und kann die benötigten Informationen natürlich nicht finden (da er sich im 64-Bit-Registrierungszweig befindet) )
Frage:
1) Wie erstelle ich 64-Bit 7-Zip-SFX?
ODER
2) Wie kann ich 64-Bit-PowerShell mit 32-Bit-SFX ausführen?
ODER
3) Wie lese ich die 64-Bit-Registrierung (nicht Wow6432Node) über die 32-Bit-PowerShell? (Obwohl ich denke, dass dies entweder unmöglich ist oder die Menge an PowerShell-Code erheblich erhöhen wird.)
ODER
Irgendwelche anderen Vorschläge?