WOW64の罠にはまって半日を費やしたのでメモ
32bitアプリを64bit環境で動かすための仕組み
これのおかげで何も意識せず32bitアプリが使える
レジストリやsystem32フォルダにアクセスする際に注意が必要。
詳細は、WOW64 - Wikipedia。
ややこしいことに、32bit時代のパス名%systemroot%\System32
は64bitアプリ専用になっており、32bitアプリ用には%systemroot%\SysWOW64
が使われる。
しかし、32bitアプリは%systemroot%\System32
のパス名で%systemroot%\SysWOW64
にアクセスすることになる。
アプリからパスを取得しても%systemroot%\SysWOW64
が%systemroot%\System32
に見える。
このような仕様があるせいで、対象のフォルダにファイル置いたのに見つからない問題が発生する。
具体例を挙げると、Systemユーザの%appdata%
が%systemroot%\System32\config\systemprofile\AppData\Roaming
なので、32bit/64bitで実態の場所が変わってしまう。
フォルダあるのにDirectoryNotFoundExceptionが返ってくるなど起きたら、WOW64の影響を確認してみよう。