2

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

但我因无法成功读取注册表值而挂断电话。

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

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

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

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

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

打印结果$IniPath=

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

写入 DWORD 的行工作正常。如果我删除注册表项,然后立即使用 regedit 检查注册表,则该键就在那里。但不管密钥是否存在。

那么可能会出现什么问题导致它无法读取值,或者如何调试呢?

4

1 回答 1

1

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

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

于 2012-07-28T20:00:31.527 回答