一种很简单的方法就是根据IntPtr类型的Size属性来判断,
//IntPtr.Size在64位为8,在32位为4
public static Boolean Is64Bit()
{
if (IntPtr.Size == )
return false;
else
return true;
}
通过查看IntPtr的源码可以看到:
//....
public struct IntPtr : ISerializable
{
//...
// 摘要:
// 获得此实例的大小。
//
// 返回结果:
// 此平台上的指针或句柄的大小,按字节计。此属性的值在 32 位平台上为 4,在 64 位平台上为 8。
public static int Size { get; }
//...
}
确实如此,在64位下IntPtr.Size=8,在32位下为4。
但请注意:
在部分Visual Studio中,如VS 2013在64的操作系统中会优先使用32位的架构,所以判断系统架构出错,
此时只需要在项目的 Properties(属性) --> Bulid(生成) --> Prefer 32-bit(首选32位),将复选框取消即可