2012-09-27 09:21:43 +0000 2012-09-27 09:21:43 +0000
18
18

¿Cómo puedo ejecutar un exe en modo de 32 bits en una máquina de 64 bits?

Tengo un ejecutable que funciona bien cuando se ejecuta en Windows de 32 bits pero se rompe cuando se ejecuta en Windows de 64 bits.

¿Hay alguna forma de forzar su ejecución en modo de 32 bits en una máquina de 64 bits?

No tengo acceso al código fuente.

Respuestas (4)

16
16
16
2012-09-27 09:49:02 +0000

¿Qué tan técnica es la respuesta que quieres? Probablemente puedas forzar el exe para que se ejecute siempre en 32 bits con algunas herramientas del SDK, pero requiere un poco de trabajo.

La respuesta fácil es lanzar desde un proceso de 32 bits (por ejemplo, usar %SystemRoot%\SYSWOW64\cmd.exe para lanzar).

Lo más complejo es comprobar qué tipo de exe es, y luego modificarlo tú mismo. El antecedente aquí es entender que el código compilado de los lenguajes que trabajan directamente con las APIs de Windows son creados como de 32bit o 64bit en tiempo de compilación por el desarrollador. Esto no puede ser cambiado sin volver al código fuente.

Sin embargo, cada vez se escriben más aplicaciones a través de una capa de virtualización que facilita la escritura de aplicaciones. Hay dos comunes: .NET y Java. No estoy seguro acerca de Java, excepto que forzar la instalación del tiempo de ejecución de Java correcto con resolver el problema.

Para .NET puedes usar las herramientas del SDK para:

  • Validar que la aplicación es “AnyCPU”: corflags myExe.exe. Usando una utilidad del SDK de .NET para leer las cabeceras de un ensamblado de .NET, para un exe devolverá algo como:
Version : v4.0.30319 CLR Header: 2.5 PE : PE32 CorFlags : 0x20003 ILONLY : 1 32BITREQ : 0 32BITPREF : 1 Signed : 0

el 32BITREQ me dice que es AnyCPU porque no se requieren 32bit.

  • Utilice corflags con su opción /32BITREQ+ para modificar el exe para que sea de 32 bits solamente.
3
3
3
2012-09-27 19:06:35 +0000

Si tienes windows 7 professional (o superior), entonces usa el modo virtual XP de Microsoft

esto emula(?) un entorno de 32 bits, y ha demostrado ser útil para conseguir que algunos viejos programas de 16 bits se ejecuten

0
0
0
2018-11-29 21:07:43 +0000

En realidad hay una manera más fácil de acomodar esto (no es una solución a largo plazo).

Suelte la aplicación “corflags.exe” en la carpeta \windows\system32. Abre una línea de comandos como administrador y escribe…

corflags “ruta y nombre del exe” /32BITPREF32+

Esto forzará a la aplicación a ejecutarse como un proceso de 32 bits en lugar de 64 bits.

0
0
0
2014-04-07 14:48:39 +0000

Probé todo y nada funcionó. pero luego pensé en mover el directorio de gta iv de los archivos de programa C/(x86) a los archivos de programa C/ y funcionó ya que x86 es para aplicaciones de 32 bits(creo) pero funcionó de todos modos.