¿Cómo puedo saber si estoy en x64 o x86 usando .NET?
Pregunta
Me gustaría ofrecer a mis usuarios enlaces correctos a una versión actualizada de mi programa según la plataforma en la que estén ejecutando, por lo que necesito saber si actualmente estoy ejecutando un sistema operativo x86 o un sistema operativo x64.
Lo mejor que he encontrado es usar Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE")
, pero creo que habría alguna instalación incorporada para esto.
Solución
Entorno.Es un sistema operativo de 64 bits y Entorno.Is64BitProcess se están introduciendo en .NET 4.Para .NET 2 necesitarás probar algunas de las otras respuestas.
Otros consejos
Llamar IsWow64Process
para saber si su proceso de 32 bits se está ejecutando en WOW64 en un sistema operativo de 64 bits.Puedes llamar GetNativeSystemInfo
para saber exactamente qué es:el wProcessorArchitecture member
de SYSTEM_INFO
será PROCESSOR_ARCHITECTURE_INTEL
para 32 bits, PROCESSOR_ARCHITECTURE_AMD64
para x64 y PROCESSOR_ARCHITECTURE_IA64
para Itanium de Intel.
Verifique el tamaño de IntPtr con Marshal.SizeOf.32 bits = 4 bytes, 64 bits = 8 bytes.
Editar:No estoy seguro de que esto sea lo que busca después de leer la pregunta nuevamente.
Puede determinar muchas cosas a través de variables de entorno como se usan en C# - Cómo obtener archivos de programa (x86) en Windows de 64 bits [Y esto me vino mejor que la respuesta de Mike, a la que hice +1 porque resulta que estoy interesado en encontrar el nombre del directorio de Archivos de programa]
comprobar solo IntPtr.Size
.Debe tener una plataforma de destino como AnyCPU.