NSIS:从注册表中读取DWORD?

时间:2012-07-28 18:11:33

标签: nsis

我正在尝试更新现有安装程序以读取注册表值(如果存在)并在执行升级安装时更改安装设置以匹配现有安装设置。

但是我因为无法成功读取注册表值而陷入困境。

我在安装程序中写了这样的密钥:

WriteRegDWORD HKLM "Software\${PRODUCT}" "IniPath" 0x00000026

这部分工作正常,密钥是创建或修改的,并且是DWORD类型,一切都很好。

但是如果我试着读回那个值,我似乎每次都得到一个空值。

ReadRegDWORD $IniPath HKCU "Software\${PRODUCT}" "IniPath"
MessageBox MB_OK "$$IniPath=$IniPath" 

打印结果$IniPath=

在阅读之前我也尝试过ClearErrors,之后IfErrors尝试了{I}错误...但我不明白为什么会出现错误并且看不到错误键。我正在运行32位窗口,所以我怀疑这是64位“错误的注册表部分”错误。

写DWORD的行正常工作。如果我删除了注册表项,并在之后立即使用regedit检查注册表,那么密钥就在那里。但无论密钥是否存在。

那么导致它无法读取值或者如何调试它可能会出错?

1 个答案:

答案 0 :(得分:1)

您正在写信给HKLM并从HKCU读书......

要调试注册表问题,您可以使用Process Monitor