如何在x64 PC上强制NSIS读取Uninstall注册表项的x32树? 尝试了一切。
SetRegView 32
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXX" "XXX"
不起作用。它读取
"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\XXX"
onInit或其他安装部分,仍然没有。
使用NSIS 3.03。
答案 0 :(得分:1)
WOW6432Node键是 32位密钥。
64位计算机上的RegEdit中的Redirected keys are mapped to physical locations under Wow6432Node。例如,HKEY_LOCAL_MACHINE \ Software被重定向到HKEY_LOCAL_MACHINE \ Software \ Wow6432Node。但是,重定向密钥的物理位置应视为系统保留。应用程序不应直接访问密钥的物理位置,因为此位置可能会更改。有关更多信息,请参阅访问备用注册表视图。
SOFTWARE\Microsoft\Windows\...
是64位视图,您需要SetRegView 64
才能访问它。
答案 1 :(得分:0)
有点直观,但是您需要使用 64位 reg视图。
要阅读:
HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ XXX
使用以下行:
ReadRegStr $0 HKLM64 "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXX" "XXX"
或者,您可以使用以下几行:
SetRegView 64
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXX" "XXX"