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

Как я могу запустить exe в 32-битном режиме на 64-битной машине?

У меня есть исполняемый файл, который отлично работает при запуске на 32-битных окнах, но ломается при запуске на 64-битных окнах.

Могу ли я каким-то образом заставить его работать в 32-битном режиме на 64-битной машине?

У меня нет доступа к исходному коду.

Ответы (4)

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

Какой технический ответ вам нужен? Вы, вероятно, можете заставить exe всегда запускать 32-битный с несколькими инструментами SDK, но это требует небольшой работы.

Простой ответ - запуск из 32-битного процесса (например, используйте %SystemRoot%\SYSWOW64\cmd.exe для запуска).

Более сложным является проверка того, что это за exe, а затем изменение его самостоятельно. Справочная информация здесь заключается в том, чтобы понять, что скомпилированный код из языков, которые непосредственно работают с Windows API, создается разработчиком как 32-битный или 64-битный во время компиляции. Затем это нельзя изменить, не вернувшись к исходному коду.

Однако все чаще приложения пишутся через уровень виртуализации, что облегчает написание приложений. Существуют два распространенных варианта: .NET и Java. Я не уверен насчет Java, за исключением того, что знаю, что принудительная установка правильной версии Java решает проблему.

Для .NET можно использовать инструменты SDK:

  • Убедитесь, что приложение “AnyCPU”: corflags myExe.exe. Использование утилиты из .NET SDK для чтения заголовков .NET сборки, для exe вернет что-то вроде:
Version : v4.0.30319 CLR Header: 2.5 PE : PE32 CorFlags : 0x20003 ILONLY : 1 32BITREQ : 0 32BITPREF : 1 Signed : 0

32BITREQ говорит мне, что это AnyCPU, потому что 32-битное не требуется.

  • Используйте corflags с его опцией /32BITREQ+, чтобы изменить exe только на 32 бита.
3
3
3
2012-09-27 19:06:35 +0000

Если у вас есть windows 7 professional (или выше), то используйте виртуальный режим XP из Microsoft

, который эмулирует(?) 32-битное окружение, и это оказалось полезным для запуска некоторых старых 16-битных программ.

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

На самом деле есть более простой способ приспособиться к этому (а не долгосрочное решение).

Бросьте приложение “corflags.exe” в папку \windows\system32. Откройте командную строку в качестве администратора и введите…

corflags “path and name of the exe” /32BITPREF32+

Это заставит приложение работать как 32-битный процесс вместо 64-битного.

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

Пробовали все и ничего не получалось. но потом подумали о переносе каталога gta iv из C/program files(x86) в C/program files и он работает, так как x86 для 32-битных приложений(я думаю), но все равно работал.

Похожие вопросы

3
19
10
28
9