如何在运行时知道我是否在c#中使用x86或x64模式

DkA*_*ito 16 .net c# 64-bit x86

可能重复:
如何判断我的应用程序是作为32位还是64位应用程序运行?

你好

我在c#(Framework 3.5 SP1)中有一个应用程序,我需要在运行时加载一个非托管程序集,但有两个不同的版本,一个用于x86,另一个用于x64,所以我需要在运行时知道哪个模式是应用运行

我已经看过这个POST但是它适用于C++,在C#中有更简单的方法吗?或者我怎样才能在C#中做到这一点?

谢谢

SLa*_*aks 23

您可以检查是否IntPtr.Size48.

  • 只需使用:Environment.Is64BitProcess (7认同)
  • 正确,但我不会因为回答明显的欺骗而奖励你. (6认同)

Art*_*fin 12

使用System.Environment.Is64BitOperatingSystem.NET 4.0中引入的属性.根据MSDN:

确定当前操作系统是否为64位操作系统,true如果操作系统为64位则返回; 否则,false.

  • 这是.Net 4.0的新功能; 他正在使用3.5. (8认同)
  • 但它没有回答这个问题.如果需要其他仅32位的组件,主应用程序甚至可以在64位操作系统上强制加载32位模式. (4认同)

Bri*_*ndy 6

您只需检查IntPtr通道的大小IntPtr.Size即可查看运行的进程:

  • 如果它是8个字节,那么您将作为x64进程运行.
  • 如果它是4个字节,那么您作为x86进程运行..

在.NET中,您可以将Platform Target项目属性设置Any CPU为在x64 OS上以x64自动运行应用程序,在x86 OS上使用相同的二进制文件自动运行x86.


您的应用程序甚至可以在x64 OS上运行,因为启动它的进程可以在WOW64仿真上运行并启动您的进程.以下是在x64 OS上将x64进程作为x86进程运行的一些其他方法.