64ビット OS で 32ビット アプリケーションを動作させると、一部のレジストリが WOW6432Node にリダイレクトされます。これを制御する方法。まだ、日本語には翻訳されていない。
see:Accessing an Alternate Registry View
RegCreateKeyEx, RegDeleteKeyEx, RegOpenKeyEx の引数 samDesired に、これらの値をセットすると、強制的に64ビットの方へ、リダイレクトされた方にアクセスできますよ、と。32ビットで使用しても、特に問題なし。
ファイルシステムの方は、3つあった。
まず、「リダイレクトしない」ようにする関数。Wow64DisableWow64FsRedirection Function
そして、「リダイレクトする」ようにする関数。Wow64EnableWow64FsRedirection Function
最後に、それらで保存しておいた、「変更する前の状態に戻す」関数。Wow64RevertWow64FsRedirection Function
ファイルシステムじゃないけど、同じく kernel32.dll にある、WOW64 上で動いているかどうかを判別する関数→IsWow64Process Function
嫌らしいことに、こいつらは 64ビットの Windows にしかインプリメントされていない。GetProcAddress で、関数のアドレスが取れるかどうか検査してから使う。
投稿日時 : 2008年10月18日 6:44