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

¿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 manera de forzar su ejecución en modo de 32 bits en una máquina de 64 bits?

No tengo acceso al código fuente.

Respuesta1

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

La respuesta fácil es iniciar desde un proceso de 32 bits (por ejemplo, utilizar %SystemRoot%\SYSWOW64\cmd.exepara iniciar).

Lo más complejo es comprobar qué tipo de exe es y luego modificarlo usted mismo. Los antecedentes aquí son comprender que el desarrollador crea el código compilado de lenguajes que funcionan directamente con las API de Windows como 32 bits o 64 bits en el momento de la compilación. Entonces esto no se puede cambiar sin volver al código fuente.

Sin embargo, cada vez más aplicaciones se escriben 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 saber que forzar la instalación correcta del tiempo de ejecución de Java resuelve el problema.

Para .NET puede utilizar las herramientas SDK para:

  • Validar que la aplicación sea "AnyCPU": corflags myExe.exe. Al usar una utilidad del SDK de .NET para leer los encabezados de un ensamblado .NET, un archivo ejecutable devolverá algo como:
Versión: v4.0.30319
Encabezado CLR: 2.5
PE: PE32
CorFlags: 0x20003
SOLO : 1
32BITREQ: 0
32BITPREF: 1
Firmado: 0

Me dice 32BITREQque esto se AnyCPUdebe a que no se requieren 32 bits.

  • Úselo corflagscon su /32BITREQ+opción para modificar el archivo ejecutable para que sea solo de 32 bits.

Respuesta2

Si tiene Windows 7 Professional (o superior), utilice el modo XP virtual desdemicrosoft

esto emula (?) un entorno de 32 bits y ha demostrado ser útil para ejecutar algunos programas antiguos de 16 bits

Respuesta3

Intenté todo y nada funcionó. pero luego pensé en mover el directorio 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.

Respuesta4

En realidad, existe una forma más sencilla de solucionar esto (no es una solución a largo plazo).

Coloque la aplicación "corflags.exe" en la carpeta \windows\system32. Abra una línea de comando como administrador y escriba...

corflags "ruta y nombre del exe" /32BITPREF32+

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

información relacionada