Я хочу, чтобы мой самораспаковывающийся архив из 7 zip запускал скрипт PowerShell после извлечения файлов. Для этого я использую метод, описанный здесь: http://www.sphaero.org/blog:2011:0504_7zip_self_extracting_autostart_exe
После извлечения файла я хочу запустить скрипт powershell, поэтому вот мое содержимое файла config.txt:
;!@Install@!UTF-8!
RunProgram="InstallCU.bat"
;!@InstallEnd@!
Файл InstallCU.bat запускает PowerShell:
powershell.exe -ExecutionPolicy Unrestricted -File InstallCU.ps1
Внутри сценария powershell я делаю много вещей, включая проверку некоторых разделов реестра в этой ветке:
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components
использование команд Test-Path и Get-ItemProperty
Я не проверял это, но я думаю, что на 32-битных компьютерах все будет работать нормально.
Моя проблема заключается в том, что в 64-разрядных системах запускается 32-разрядная (x86) версия PowerShell. Когда я обращаюсь к любому пути в реестре в разделе HKLM:\Software, он перенаправляется в HKLM:\Software\Wow6432Node\ и, конечно, не может найти нужную мне информацию (потому что она находится в 64-битной ветви реестра )
Вопрос:
1) Как мне сделать 64-битный 7-zip SFX?
ИЛИ ЖЕ
2) Как мне запустить 64-битную PowerShell из 32-битного SFX?
ИЛИ ЖЕ
3) Как мне прочитать 64-битный реестр (не Wow6432Node) через 32-битный powershell? (Хотя я думаю, что это либо невозможно, либо значительно увеличит объем кода PowerShell)
ИЛИ ЖЕ
Любые другие предложения?