Nsis 如何强制ReadRegStr读取32位节点?

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

如何在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。

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"