私の 32 ビット アプリケーションは 64 ビット Windows 7 で実行されています。レジストリにアクセスしようとしていますHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall
。Uninstall
デフォルトの 64 ビット レジストリ ビューのキーの下にいくつかのサブキーがあることを regedit で確認できます (Dropbox はその場所と Google Chrome にキーを作成します)。Uninstall
ただし、実際には 32 ビット レジストリ ビューにはキーがありません。実際、regedit にはActive Setup
以下の 1 つのキーしかありませんHKEY_CURRENT_USER\Software\Wow6432Node\Microsoft
。Windows
下にサブキーすらありませんMicrosoft
。
ただし、32 ビット アプリケーションが の 32 ビット レジストリ ビューにアクセスしようとするとHKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall
、64 ビット ビューからキーを取得します。何故ですか?
フラグKEY_WOW64_32KEYでさえ、ここでは役に立ちません。コードは、結果が 32 ビット ビューからのものか、64 ビット ビューからのものかを知る必要があります。
私たちのコードは、キーの 32 ビット ビューと 64 ビット ビューの両方にもアクセスしますが、HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
この問題は見当たりません。違いは、HKLM の 32 ビット ビューにはUninstall
キーがあり、HKCU の 32 ビット ビューにはキーがないことです。
WoW64 のレジストリ リダイレクトは知っていますが、これは違うようです。MSDN で有用な情報を見つけることができませんでした。誰かがこれに光を当てることができますか?