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

问题描述 投票:0回答:2

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

nsis
2个回答
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才能访问它。


0
投票

这有点直观,但您需要使用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"
© www.soinside.com 2019 - 2024. All rights reserved.