2012-07-28 84 views
1

我试图更新现有安装程序以读取注册表值(如果存在),并在执行升级安装时更改安装设置以匹配现有安装设置。NSIS:从注册表中读取DWORD?

但我越来越无法成功读取注册表值。

我写这样的键在安装程序中:

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

这部分工作得很好,关键是创建或修改,并且是DWORD类型的,一切都很好。

但是,如果我尝试读取该值,我似乎每次都会得到一个空值。

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

结果打印$IniPath=

我也试过后阅读和IfErrors之前做ClearErrors,而且它似乎进入IfErrors ...但我不明白为什么它会是有错误并没有看到钥匙。我正在运行32位窗口,所以我怀疑这是64位“注册表的错误部分”错误。

写DWORD的行工作得很好。如果我删除了注册表项,然后立即使用regedit检查注册表,那么密钥就在那里。但不管钥匙是否存在。

那么,怎么会导致它无法读取值,或者如何调试呢?

回答

1

您写这封信是HKLM和HKCU从阅读...

你能够使用Process Monitor调试注册表的问题。

+0

Doh!我完全应该抓住这一点 – 2012-07-28 20:04:20