¿Cómo puede mi aplicación C # verificar si una aplicación / proceso en particular (nota: no el proceso actual) se está ejecutando en modo de 32 bits o 64 bits?
Por ejemplo, es posible que desee consultar un proceso en particular por su nombre, es decir, 'abc.exe', o según el número de identificación del proceso.
c#
process
32bit-64bit
satya
fuente
fuente
Respuestas:
Una de las formas más interesantes que he visto es esta:
Para saber si OTROS procesos se están ejecutando en el emulador de 64 bits (WOW64), use este código:
fuente
(Environment.OSVersion.Version.Major >= 5 && Environment.OSVersion.Version.Minor >= 1)
Y es por eso que Microsoft tiene que crear calzas de compatibilidad de versiones para evitar errores en un código como ese. ¿Qué sucede cuando sale Windows Vista (6.0)? Y la gente luego habla mal de Microsoft por hacer Windows 7 versión 6.1 en lugar de 7.0, corrige tantos errores de compatibilidad de aplicaciones.processHandle = Process.GetProcessById(process.Id).Handle;
lugar de soloprocessHandle = process.Handle;
?Si está utilizando .Net 4.0, es una sola línea para el proceso actual:
Consulte Environment.Is64BitProcessProperty (MSDN).
fuente
Is64BitProcess
? Quizás pueda usar lo que hace para averiguar si me estoy ejecutando como un proceso de 64 bits.Is64BitProcess
( referencesource.microsoft.com/#mscorlib/system/environment.cs ). Sin embargo, es solo una declaración de retorno codificada, controlada por el símbolo de compilación.La respuesta seleccionada es incorrecta ya que no hace lo que se le preguntó. Comprueba si un proceso es un proceso x86 que se ejecuta en el sistema operativo x64; por lo que devolverá "falso" para un proceso x64 en x64 OS o un proceso x86 que se ejecuta en x86 OS.
Además, no maneja los errores correctamente.
Aquí hay un método más correcto:
fuente
Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") == "x86"
siempre devolverá verdadero para un proceso de 32 bits. Es mejor usarloSystem.Environment.Is64BitOperatingSystem
si se admitePuede verificar el tamaño de un puntero para determinar si es de 32 bits o de 64 bits.
fuente
fuente
Aquí está la verificación de una línea.
fuente
Me gusta usar esto:
De esta manera, si necesito ubicar o verificar un archivo, puedo escribir fácilmente:
fuente
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
lugar de codificar `C: \ Archivos de programa`?