How do I tell if my application is running as a 32-bit or 64-bit application?

匿名 (未验证) 提交于 2019-12-03 02:52:02

问题:

Any CPU) is running as a 32-bit or 64-bit application?

回答1:

if (IntPtr.Size == 8)  {     // 64 bit machine }  else if (IntPtr.Size == 4)  {     // 32 bit machine } 


回答2:

If you're using .NET 4.0, it's a one-liner for the current process:

Environment.Is64BitProcess 

Reference: Environment.Is64BitProcess Property (MSDN)



回答3:

I found this code from Martijn Boven that does the trick:

public static bool Is64BitMode() {     return System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == 8; } 


回答4:

This code sample from Microsoft All-In-One Code Framework can answer your question:

Detect the process running platform in C# (CSPlatformDetector)

The CSPlatformDetector code sample demonstrates the following tasks related to platform detection:

  1. Detect the name of the current operating system. (e.g. "Microsoft Windows 7 Enterprise")
  2. Detect the version of the current operating system. (e.g. "Microsoft Windows NT 6.1.7600.0")
  3. Determine whether the current operating system is a 64-bit operating system.
  4. Determine whether the current process is a 64-bit process.
  5. Determine whether an arbitrary process running on the system is 64-bit.

If you just want to determine whether the currently running process is a 64-bit process, you can use the Environment.Is64BitProcess property that is new in .NET Framework 4.

And if you want to detect whether an arbitrary application running on the system is a 64-bit process, you need to determine the OS bitness, and if it is 64-bit, call IsWow64Process() with the target process handle:

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; } 


回答5:

In .Net Standard you can use System.Runtime.InteropServices.RuntimeInformation.OSArchitecture



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!