アフィリエイト広告を利用しています

広告

posted by fanblog

2015年08月27日

レジストリの Wow6432Node へのリダイレクト条件

64ビットOS上で実行される32ビット実行ファイルから見えるレジストリツリーは Wow6432Node 以下になるというのは、64ビット開発を始めた頃に知ったのだが、必ずしもそうとは限らない状況があることがわかった
たまたま、32ビットコンパイルした実行ファイルを Windows8.1 (64bit) 上でデバッグしていた際、レジストリから情報を取得するルーチンで、値が取れていないことが判明、よく見たら、32ビット環境から見える HKLM\SOFTWARE\Wow6432Node 以下には確かに値を設定していないことがわかった
例えば以下のコードを実行しようとすると

HKEY hKey;
LONG lRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\MyCompany\\Information"), 0, KEY_QUERY_VALUE, &hKey);
実際には HKLM\Software\Wow6432Node\MyCompany\Information キーが開かれる

これと同じスキームで、HKCU にアクセスしている箇所のキーを、Wow6432Node 以下に作成したら、見つからないという現象に見舞われた

HKEY hKey;
LONG lRes = RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\MyCompany\\Information"), 0, KEY_QUERY_VALUE, &hKey);
コード上はおかしくないのだが、もしかしたらと思って、HKCU\Software\MyCompany\Information に値を設定したら正しく読み込めたのだった
こんな仕様だったっけ?と思い調べなおしたら、以下の解説が見つかった

https://msdn.microsoft.com/en-us/library/aa384253%28v=vs.85%29.aspx

要するに、Wow6432Node にリダイレクトされるものとそうでないものが決まっているということだった
こうした情報を見逃していたのだった(恥ずかしい)




この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/4112954
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
ファン
検索
<< 2016年05月 >>
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
最新記事
最新コメント
タグクラウド
カテゴリアーカイブ
プロフィール
いしちゃんさんの画像
いしちゃん
ブログ
プロフィール
日別アーカイブ
×

この広告は30日以上新しい記事の更新がないブログに表示されております。