【发布时间】:2010-12-03 04:44:35
【问题描述】:
在 .NET 中,“平台目标:任何 CPU”编译器选项允许 .NET 程序集在 x64 机器上以 64 位运行,在 x86 机器上以 32 位运行。还可以使用“平台目标: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 运行。这可能吗?
【问题讨论】:
标签: c# 64-bit clr code-injection