我有一个PowerShell脚本,我用NSIS脚本包装来创建.exe
PS脚本将值写入HKEY_LOCAL_MACHINE\SOFTWARE\FolderName
但是,我注意到它实际上是在写HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\FolderName
我在64位操作系统上。默认Hive应该是64位,我没有设置或重定向到32位配置单元。
NSIS可执行写入32位Hive。 如果我在ISE中运行PS脚本,它会写入64位配置单元,如同已过时。
所以,我不知道为什么它在NSIS中包装时在WOW6432Node下编写。我需要注意什么?
答案 0 :(得分:1)
如果您正在运行64位机器的脚本,这将有效。
${If} ${RunningX64}
${DisableX64FSRedirection}
${EndIf}
# put your code here
${If} ${RunningX64}
${EnableX64FSRedirection}
${EndIf}
答案 1 :(得分:0)
据我所知,NSIS使用两个 Win32 API 来执行进程 ShellExecute 和 CreateProcess
如果您的操作系统是64位,那么它们都可以从NSIS 32位进程运行64位进程(x64)。
你遇到的问题是因为它可能调用了32位PS。所以仔细检查那部分。