2012-07-28 139 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