NSIS读取注册表项为postgresql返回空

时间:2018-02-20 21:50:46

标签: postgresql key registry nsis

使用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:

有什么建议吗? 感谢

1 个答案:

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