2010-11-29 4 views
5

Я видел, что некоторые программы, которые были написаны мной и собраны для x86 с использованием ml.exe, отлично работают на моей Win 7 x64. Я считаю, что это связано с технологией Wow.Почему некоторые программы, скомпилированные для x86, не работают под x64, а некоторые -

Однако есть некоторые программы (не написанные мной), которые не запускаются. Они приводят к ошибке: Версия этого файла несовместима с версией Windows, в которой вы работаете. Проверьте компьютерную информационную систему, чтобы узнать, нужна ли вам x86 (32-разрядная) или 64-разрядная версия программы, а затем обратитесь к издателю программного обеспечения

Можно ли каким-либо образом изменить EXE эти программы, чтобы запустить его на Win 7 x64. В чем принципиальное отличие этих программ, которые отличаются от других программ, которые работают прозрачно.

+0

+1, я тоже хотел бы знать – Jacques 2010-11-29 11:34:22

ответ

6

Это на самом деле 8- или 16-разрядные программы. Windows x64 работает в режиме Long Mode, который не поддерживает режим Virtual 8086, необходимый для таких программ. Невозможно заставить их работать, не перекомпилируя их из источника или запуская их на виртуальной машине.

+0

8 бит программ а? Я не видел ни одного из них какое-то время ... ;-) – 2010-11-29 11:44:58

0

Одной из причин может быть комбинация .NET и родных библиотек. Библиотеки .NET скомпилированы во время выполнения как x64 (если вы не укажете явно x86), а собственные библиотеки запускаются в режиме x86. он не может бежать togehther.

Другой причиной является доступ к реестру. В зависимости от используемого API, x86app в режиме wow64 может быть перенаправлен в другую часть реестра. Если API доступа к реестру несовместим, это может создать проблему.