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.

¿Fue útil?

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.

de aquí

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