Nsis 如何强制ReadRegStr读取32位节点?
如何在x64 PC上强制NSIS读取卸载注册表项的x32树?Nsis 如何强制ReadRegStr读取32位节点?,nsis,Nsis,如何在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
什么都试过了
SetRegView 32
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\XXX" "XXX"
不起作用。上面写着
"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\XXX"
onInit,或安装的其他部分,仍然是空的
使用NSIS 3.03。WOW6432节点键是32位键 。例如,HKEY_LOCAL_MACHINE\Software被重定向到HKEY_LOCAL_MACHINE\Software\WOW6432节点。但是,重定向密钥的物理位置应视为系统保留。应用程序不应直接访问密钥的物理位置,因为该位置可能会更改。有关详细信息,请参见访问备用注册表视图
64位机器上的RegEdit中的
SOFTWARE\Microsoft\Windows\…
是64位视图,您需要SetRegView 64
来访问它。这有点违反直觉,但您需要改用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"