2008-09-18 19 views
5

Me gustaría ofrecer a mis usuarios enlaces correctos a una versión actualizada de mi programa en función de la plataforma en la que se ejecutan, así que necesito saber si actualmente estoy usando un sistema operativo x86 o un sistema operativo x64.¿Cómo puedo saber si estoy en x64 o x86 usando .NET?

Lo mejor que he encontrado es usar Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"), pero creo que habría alguna función incorporada para esto?

+1

Debe aceptar una respuesta o explicar lo que hizo al final y aceptar eso. –

Respuesta

0

Comprueba el tamaño de IntPtr con Marshal.SizeOf. 32 bit = 4 bytes, 64 bit = 8 bytes.

Editar: No estoy seguro de que esto es lo que está buscando después de leer la pregunta de nuevo.

+0

Esto diferenciaría entre una plataforma de 32 bits y una de 64 bits, aunque la plataforma de 64 bits podría ser, por ejemplo, Itanium y no x64. (Improbable, lo sé, pero es posible). – millenomi

+0

No necesita utilizar Marshal.SizeOf, puede usar IntPtr.Size – Wilka

+1

-1: Esto indica si este proceso de .NET es x64 –

-2

Compruebe solo IntPtr.Size. Necesita tener una plataforma de destino como AnyCPU.

from here

+0

-1: duplicado de la respuesta de Leppie (y erróneo por la misma razón) –

+0

(me doy cuenta de que es diferente, pero el mejor lugar para señalarlo es en un comentario sobre la otra respuesta. Pero también me doy cuenta de que probablemente aún no hay comentarios en el día y/o no tienes suficientes representantes para hacerlos ...) –

4

llamada IsWow64Process para averiguar si su proceso de 32 bits se ejecuta en WOW64 en un sistema operativo de 64 bits. Puede llamar al GetNativeSystemInfo para averiguar exactamente qué es: wProcessorArchitecture member de SYSTEM_INFO será PROCESSOR_ARCHITECTURE_INTEL para 32 bits, PROCESSOR_ARCHITECTURE_AMD64 para x64 y PROCESSOR_ARCHITECTURE_IA64 para Intel Itanium.

+1

+1: Explícito sobre lo que hace cada llamada, no es engañoso –

0

Se puede determinar a través de una gran cantidad de variables de entorno que se utiliza en C# - How to get Program Files (x86) on Windows 64 bit [Y esto sucedió a mi gusto mejor que la respuesta de Mike, que me han hecho +1 en que da la casualidad que interesado en encontrar el nombre del directorio Archivos de programa]

Cuestiones relacionadas