¿Cómo saber si mi procesador tiene 32 o 64 bits en C#?¿Cómo saber si mi procesador tiene 32 o 64 bits en C#?
Respuesta
Usted puede consultar la clase WMIWin32_Processor
usando System.Management.ManagementObject
:
ManagementObject mo;
mo = new ManagementObject("Win32_Processor.DeviceID='CPU0'");
ushort i = (ushort)mo["Architecture"];
switch (i)
{
case 0:
return "32 Bit";
break;
case 9:
return "64 Bit";
break;
}
Tome un vistazo a the MSDN Library description los códigos de otros procesadores.
Un problema con esto es que el usuario que ejecuta el programa necesita privilegios para ver el WMI.
La forma más sencilla de comprobar de forma nativa en C# es:
tamañovar size = IntPtr.Size;
será igual a 4 o 8 pero la gran pregunta es ¿Por qué necesita saber?
Eso no indica qué tipo de procesador es, solo con qué se ejecuta la aplicación actual. – Guffa
Si solo quiere saber si la aplicación actual se está ejecutando como una aplicación de 32 bits o una de 64 bits, simplemente use la propiedad IntPtr.Size
.
int bits = IntPtr.Size * 8;
Para encontrar información sobre el procesador real es más difícil. Here is a library que obtiene cierta información, pero la página no dice si recibe esa información específica. Puede get some information from the registry, no he comprobado cuánta información hay.
También puede usar P/Invoke para llamar al GetNativeSystemInfo y obtener una estructura SystemInfo.
Otra solución es similar a esto:
isWow64 = false;
if (System.Environment.OSVersion.Version.Major >= 5 &&
System.Environment.OSVersion.Version.Minor >= 1)
{
var processHandle = GetProcessHandle((uint)
System.Diagnostics.Process.GetCurrentProcess().Id);
bool retVal;
if (!NativeMethods.IsWow64Process(processHandle, out retVal))
{
throw (new Win32Exception());
}
isWow64 = retVal;
}
solución alternativa (pero no se recomienda) :)
public bool Is64bitOS
{
get
{
return Environment.GetEnvironmentVariable("ProgramFiles(x86)")
!= null;
}
}
public string ProgramFilesX86
{
get
{
string programFiles =
Environment.GetEnvironmentVariable("ProgramFiles(x86)");
if (programFiles == null)
{
programFiles = Environment.GetEnvironmentVariable(
"ProgramFiles");
}
return programFiles;
}
}
consultar la clase Win32_Processor a través de WMI
Usted puede obtener la CPU (y más información del registro:
HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor
Tiene 1 o más subclaves (uno para cada núcleo) llamados 0, 1, 2, etc. Cada subclave contiene información sobre el núcleo que incluye el Identificador que contiene x86 o algunos 64 bits de texto, incluida la familia de procesadores y el modelo.
Esto es correcto, pero solo en máquinas con Windows. No creo que esto funcione para aplicaciones Silverlight, Phone 7 o aplicaciones que se ejecutan en mono/linux. – matt
[DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsWow64Process([In] IntPtr hProcess, [Out] out bool lpSystemInfo);
public static bool Is64Bit()
{
bool retVal;
IsWow64Process(Process.GetCurrentProcess().Handle, out retVal);
return retVal;
}
¿Qué pasa con Environment.Is64BitOperatingSystem? –
Para cualquier persona utilizando .NET 4.0 o posterior, hay una propiedad integrada System.Environment.Is64BitOperatingSystem
para darle esta información.
- 1. ¿Cómo puedo saber si mi CPU tiene 32 o 64 bits?
- 2. Usando C#, ¿cómo saber si mi máquina es de 64 bits o 32 bits?
- 3. ¿Cómo puedo saber si mi servidor ejecuta mongodb 64 bits?
- 4. División de 64/32 bits en un procesador con división de 32/16 bits
- 5. ¿Cómo comprobar si una biblioteca tiene 32 bits/64 bits incorporados en Mac OS X?
- 6. ¿Cómo puedo saber si mi instancia de Amazon EC2 es de 32 bits o de 64 bits?
- 7. ¿Cómo puedo saber si mi aplicación se está ejecutando como una aplicación de 32 bits o de 64 bits?
- 8. ¿Cómo puede mi programa determinar si se está ejecutando en Windows de 32 o 64 bits?
- 9. uint es de 32 bits, sin importar si el sistema es de 32 o 64 bits?
- 10. ¿Cómo puedo determinar si una aplicación .NET tiene 32 o 64 bits?
- 11. Cómo comprobar si IIS está en el modo de 32 bits o de 64 bits
- 12. ¿Cuál es la diferencia entre un procesador de 32 bits y de 64 bits?
- 13. ¿Aplicación de 32 bits o de 64 bits en el sistema operativo de 64 bits?
- 14. ¿iPhone OS es de 64 bits o 32 bits?
- 15. Comprobando si el archivo es de 32 bits o de 64 bits: en Windows
- 16. tamaño de la máquina 64 o 32 bits
- 17. ¿Cómo puedo saber si mi GCC compila 64 bits de forma predeterminada?
- 18. Registros de 64 bits en ventanas de 32 bits
- 19. Programar determinar si native .exe es de 32 bits o de 64 bits
- 20. ¿Cómo puedo verificar si un binario compilado es de 32 bits o de 64 bits?
- 21. ¿Cómo puedo saber si mi IE es de 64 bits? (Para el caso, ¿Java también?)
- 22. Python: compruebe si un sistema tiene 32 o 64 bits para determinar si ejecuta la función o no.
- 23. Determine si el proceso actual de PowerShell es de 32 bits o de 64 bits.
- 24. 64 bits por división de 32 bits
- 25. Alineación de memoria en un procesador Intel de 32 bits
- 26. Qué comando usar para comprobar si python es de 64 bits o de 32 bits
- 27. Diferencia entre "Mi Mac de 32 bits" y "Mi Mac de 64 bits" en Xcode 4?
- 28. Elegante y segura manera de determinar si la arquitectura es de 32 bits o 64 bits
- 29. Determinar si un archivo ejecutable (o biblioteca) es de 32 o 64 bits (en Windows)
- 30. Compilación de 32 bits con llvm-gcc de 64 bits
Puedo consultar la clase Win32_Processor (desde PowerShell) sin problemas, sin privilegios administrativos. También podría consultar el ancho de la dirección/ancho de datos en lugar de la arquitectura, porque la arquitectura 6 (Itanium) también sería de 64 bits. No suponga que solo hay x86 y x86_64 por ahí. – Joey