.NETでは、「プラットフォームターゲット:任意のCPU」コンパイラオプションを使用すると、.NETアセンブリをx64マシンでは64ビット、x86マシンでは32ビットとして実行できます。'Platform Target:x86'コンパイラオプションを使用して、x64マシン上でアセンブリを強制的にx86として実行することもできます。
'Any CPU'フラグを使用してアセンブリを実行することは可能ですが、x86またはx64 CLRのどちらで実行する必要があるかを判断しますか?通常、この決定は、基盤となるシステムのビット数に基づいて、CLR / OSローダーによって行われます(私の理解ではそうです)。
実行中の他のプロセスと対話(読み取り:コードを挿入)できるC#.NETアプリケーションを作成しようとしています。x64プロセスは、他のx64プロセスにのみ注入でき、x86でも同じです。理想的には、JITコンパイルとAny CPUオプションを利用して、単一のアプリケーションを使用してx64またはx86プロセス(x64マシン上)に注入できるようにしたいと思います。
アイデアは、アプリケーションが任意のCPUとしてコンパイルされるということです。x64マシンでは、x64として実行されます。ターゲットプロセスがx86の場合、それ自体を再起動し、CLRにx86として実行させる必要があります。これは可能ですか?