¿Cómo puedo saber si mi aplicación se está ejecutando como una aplicación de 32 bits o de 64 bits?

¿Cómo puedo saber si mi aplicación (comstackda en Visual Studio 2008 como Any CPU ) se está ejecutando como una aplicación de 32 bits o de 64 bits?

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

Si está utilizando .NET 4.0, es un trazador de líneas para el proceso actual:

 Environment.Is64BitProcess 

Referencia: Environment.Is64BitProcess Property (MSDN)

Encontré este código de Martijn Boven que hace el truco:

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

Este ejemplo de código de Microsoft All-In-One Code Framework puede responder a su pregunta:

Detectar la plataforma de ejecución de proceso en C # (CSPlatformDetector)

El ejemplo de código CSPlatformDetector muestra las siguientes tareas relacionadas con la detección de plataforma:

  1. Detecta el nombre del sistema operativo actual. (por ejemplo, “Microsoft Windows 7 Enterprise”)
  2. Detecta la versión del sistema operativo actual. (por ejemplo, “Microsoft Windows NT 6.1.7600.0”)
  3. Determine si el sistema operativo actual es un sistema operativo de 64 bits.
  4. Determine si el proceso actual es un proceso de 64 bits.
  5. Determine si un proceso arbitrario que se ejecuta en el sistema es de 64 bits.

Si solo desea determinar si el proceso que se está ejecutando actualmente es un proceso de 64 bits, puede usar la propiedad Environment.Is64BitProcess que es nueva en .NET Framework 4.

Y si desea detectar si una aplicación arbitraria que se ejecuta en el sistema es un proceso de 64 bits, debe determinar el bitness del sistema operativo, y si es de 64 bits, llame a IsWow64Process() con el identificador del proceso de destino:

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

En .Net Standard puede usar System.Runtime.InteropServices.RuntimeInformation.OSArchitecture