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 に答える