Pre .NET 4 se sugirió utilizar el tamaño de un IntPtr
(4 de 32 bits y 8 para 64 bits). Sin embargo, esto no le da la bitness de la máquina - le da la bitness de la CLR que se está utilizando.
Esa es una diferencia importante si se ejecuta dentro de un proceso de 32 bits, como complementos de aplicaciones. Tengo un blog sobre la búsqueda de las máquinas valor de bits basado en WMI:
http://adamhouldsworth.blogspot.com/2010/03/64bit-registry-from-32bit-application.html
Nota sin embargo, que estoy todavía no está claro si esto será verdaderamente representar el valor de bits del sistema operativo actual (ya que está utilizando el procesador) .
Para la gran mayoría de las situaciones, bajo compilación normal (AnyCPU) ejecutando su propia aplicación, será suficiente con IntPtr
.
En .NET 4, como han dicho otros, ahora hay Environment.Is64BitProcess
y Environment.Is64BitOperatingSystem
.
Eso es lo que Microsoft aconseja ... http://msdn.microsoft.com/en-us/library/ms973190.aspx – pascal
Tenga en cuenta que a menos que especifique la compilación como x86, cualquier aplicación normal en un sistema operativo de 64 bits ejecutará 64 bits. Las excepciones ocurren cuando se ejecuta dentro de otros procesos. –
Compruebe aquí: http://stackoverflow.com/questions/336633/how-to-detect-windows-64-bit-platform-with-net –