.NETアプリを64bitOSのWOW64上で動かす

.NETのアプリが動作モードが32bitか64bitかというのは
ビルドするときに立てたフラグからx86/x64の動作を決めているらしい。

x64で本格化する64ビットWindowsの時代(5) – ITレポート(動向/解説):ITpro

ビルドするとき[Any CPU]にしていると、32bit環境なら32bitで、64bit環境なら64bitで動作する。
ならそんなわけで、ちょっと前の.NET 2.0が主流だった頃のアプリケーションは64bitを意識せずに作っているわけでもないのに、64bitで動作していたりする。
中にはunzip32.dllみたいなモジュールをロードしようとしたりしてエラーみたいなことになったりする。

解決方法としてはWOW64上で32bitとして動かせばいいというだけなんだが、
とっくの昔に開発を終了しているソフトをコンパイルし直せとか作者に求めるのは無理なので、
Windows SDKに入ってる「corflags.exe」を使って、PEヘッダーを書き換えることにした。

.NETアプリを64bitOSのWOW64上で動かす Read More »