2010-11-29 11 views
5

He visto que algunos programas que fueron escritos por mí y ensamblados para x86 utilizando ml.exe funcionan bien en mi Win 7 x64. Creo que esto se debe a la tecnología Wow.¿Por qué algunos programas compilados para x86 no se ejecutan en x64, mientras que algunos lo hacen

Sin embargo, hay algunos programas (no escritos por mí) que no se ejecutan. Dan el error de que: La versión de este archivo no es compatible con la versión de Windows que está ejecutando. Compruebe la información del sistema de su computadora para ver si necesita una versión x86 (32 bits) o x64 (64 bits) del programa, y ​​luego contáctese con el editor del software

¿Hay alguna forma de que pueda modificar el EXE de estos programas para que se ejecute en Win 7 x64. ¿Cuál es la diferencia fundamental en estos programas que lo hacen diferente de otros programas que se ejecutan de manera transparente.

+0

+1, me gustaría saber también – Jacques

Respuesta

6

En realidad son programas de 8 o 16 bits. Windows x64 se ejecuta en modo largo, que no es compatible con el modo 8086 virtual, requerido para dichos programas. No hay forma de que funcionen antes de recompilarlos desde el origen o ejecutarlos en una máquina virtual.

+0

programas de 8 bits ¿eh? No he visto uno de esos por un tiempo ... ;-) –

+0

En realidad, eso puede no ser del todo cierto. Vea aquí: http://social.answers.microsoft.com/Forums/en-US/w7programs/thread/8a8733ad-5532-41a7-9625-aba80ef51a11. –

+2

La respuesta aceptada en ese hilo no es una respuesta en absoluto. –

0

Una razón puede ser la combinación de .NET y bibliotecas nativas. Las bibliotecas .NET se compilan en tiempo de ejecución como x64 (si no se especifica explícitamente x86) y las bibliotecas nativas se ejecutan en modo x86. no puede correr junto.

Otro motivo es el acceso al registro. Dependiendo de la API utilizada, x86app en modo wow64 se puede reenviar a otra parte del registro. Si la API de acceso al registro no es consistente, puede generar un problema.

Cuestiones relacionadas