¿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.