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

时间:2018-06-01 18:57:45

标签: nsis

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

2 个答案:

答案 0 :(得分:1)

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才能访问它。

答案 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"