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