使用NSIS示例读取注册表项,我试图读取postgres注册表项但总是返回空,我验证路径是正确的但是NSIS ReadRegStr显示为空,带引号,没有引号。 (原始示例从Software \ Microsoft \ Windows \ CurrentVersion读取,它正确地恢复了密钥,值)
loop1:
ClearErrors
EnumRegValue $1 HKLM "SOFTWARE\PostgreSQL\Installations\postgresql-x64-10" $0
IfErrors done
IntOp $0 $0 + 1
ReadRegStr $2 HKLM SOFTWARE\PostgreSQL\Installations\postgresql-x64-10 $1
MessageBox MB_YESNO|MB_ICONQUESTION "$1 = $2$\n$\nMore?" IDYES loop1
done:
有什么建议吗? 感谢
答案 0 :(得分:2)
64位版本的Windows有两个注册表视图。
registry redirector通过在WOW64上提供注册表某些部分的单独逻辑视图来隔离32位和64位应用程序。注册表重定向器拦截对其各自逻辑注册表视图的32位和64位注册表调用,并将它们映射到相应的物理注册表位置。重定向过程对应用程序是透明的。因此,即使数据存储在64位Windows上的其他位置,32位应用程序也可以访问注册表数据,就像它在32位Windows上运行一样。
使用SetRegView从NSIS中的64位视图中读取:
Section
SetRegView 64
ReadRegStr ...
SetRegView lastused
SectionEnd