質問: VisualStudioで作成した32bit アプリケーションを実行したところ、動作が停止しました。 ダブルクリックで実行した直後に××の動作は停止を停止しました、とメッセージが表示されます。 以下にある、%UserProfile%AppData\Local\Microsoft\Windows\WER\ReportArchive を確認したところ、32bitアプリにもかかわらず、system32のdllを読みこみんでいました。 ``` LoadedModule[1]=C:\Windows\SYSTEM32\ntdll.dll ``` 132bitアプリケーションは以前は問題なく動作していました。 2上記の問題は実行環境をクラウド(AWS)に移行しようとした際に発生しました。(OSは変更していません) 3同様の環境移行を64bit アプリケーションで行っていますが、問題なく動作しています。 4また、問題なく動作する環境で、意図的にエラーを発生させた場合、%UserProfile%AppData\Local\Microsoft\Windows\WER\ReportArchive のログではWow64を読み込んでしました。 ``` LoadedModule[1]=C:\Windows\SysWOW64\ntdll.dll ``` 以上のことから、wow64を読み込んでいないことが原因ではないかと推測しています。 msdnのファイルシステムリダイレクタに関する記述を読んだのですが、問題発生の原因、対応法がわかりませんでした。 対応方法ご存知の方はいらっしゃらないでしょうか。 ちなみに、実行環境は AWS EC2 m5.xlarge WindowsServer 2012R2 です。
回答: .NETアプリケーションはCPUネイティブのコードが含まれておらず、実行時にコード生成を行うため、特定のCPUには依存していません。`CorFlags.exe`を使用することで当該バイナリの設定を確認することができます。 ``` 32BITREQ : 0 32BITPREF : 0 ``` と表示された場合、32bitを要求せず32bitを優先しないため、64bit OSでは64bit実行されます。どちらかが`0`以外の場合には64bit OSであっても32bit動作します。