.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ヘッダーを書き換えることにした。

しかし、そのためだけに700MB超えの使わないSDKをインストールする気にもならないので、
こちらのWeb版インストーラーで「.NET Development Tools」のみを選択し、インストール(約80MB)。

C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin

ここに「corflags.exe」があるので、あとはコマンドラインから

>corflags [.NETの実行ファイル(exe)のパス] /32BIT+

としてやる。
すると、32bitのフラグが立ち、以降32bitアプリケーションとしてWOW64上で動作するようになる。
まあ、かなり既出の情報な訳ですが。