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

StackOverflow https://stackoverflow.com/questions/266082

  •  06-07-2019
  •  | 
  •  

Pregunta

¿Cómo puedo saber si mi aplicación (compilada en Visual & nbsp; Studio & nbsp; 2008 como Any CPU ) se ejecuta como una aplicación de 32 bits o de 64 bits?

¿Fue útil?

Solución

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

Otros consejos

Si está utilizando .NET 4.0, es una línea para el actual proceso:

Environment.Is64BitProcess

Referencia: Propiedad Environment.Is64BitProcess (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:

Detecta el proceso que ejecuta la plataforma en C # (CSPlatformDetector)

  

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

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

Si solo desea determinar si el proceso actualmente en ejecución es de 64 bits proceso, puede usar la propiedad Environment.Is64BitProcess que es nuevo en .NET Marco 4.

Y si desea detectar si una aplicación arbitraria 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 de 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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top