如何判断我的应用程序是作为32位还是64位应用程序运行?
题
如何判断我的应用程序(在Visual Studio  2008中编译为任何CPU )是作为32位还是64位应用程序运行?
解决方案
if (IntPtr.Size == 8)
{
// 64 bit machine
}
else if (IntPtr.Size == 4)
{
// 32 bit machine
}
其他提示
如果您正在使用 .NET 4.0,那么它就是当前的单行过程:
Environment.Is64BitProcess
参考: Environment.Is64BitProcess Property (MSDN)
我发现 Martijn Boven 中的这段代码可以解决问题:
public static bool Is64BitMode() {
return System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == 8;
}
Microsoft All-In-One Code Framework中的此代码示例可以回答您的问题:
在C#中检测进程运行平台(CSPlatformDetector)
CSPlatformDetector代码示例演示了以下任务 与平台检测有关:
- 检测当前操作系统的名称。 (例如“Microsoft Windows 7 Enterprise”)
- 检测当前操作系统的版本。 (例如“Microsoft Windows NT 6.1.7600.0”)
- 确定当前操作系统是否为64位操作系统。
- 确定当前进程是否为64位进程。
- 确定系统上运行的任意进程是否为64位。
醇>
如果您只想确定当前正在运行的进程是否为64位 过程中,您可以使用 Environment.Is64BitProcess 属性是.NET的新功能 框架4。
如果要检测是否在系统上运行任意应用程序
是一个64位进程,你需要确定操作系统的位数,如果它是64位,
使用目标进程句柄调用 IsWow64Process()
:
static bool Is64BitProcess(IntPtr hProcess)
{
bool flag = false;
if (Environment.Is64BitOperatingSystem)
{
// On 64-bit OS, if a process is not running under Wow64 mode,
// the process must be a 64-bit process.
flag = !(NativeMethods.IsWow64Process(hProcess, out flag) && flag);
}
return flag;
}
在.Net Standard中,您可以使用 System.Runtime.InteropServices.RuntimeInformation.OSArchitecture
不隶属于 StackOverflow