Как запустить программу в 32 битном режиме

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

Есть ли способ заставить его работать в 32-битном режиме на 64-битной машине?

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

Это не имеет особого смысла. Если в программном обеспечении нет некоторого кода, который явно делает его неудачным, если он не работает на 64-битной машине. 32-битная работает нормально на 64-битной, проблема возникает наоборот (64-битная на 32-битной). Вы получаете сообщение об ошибке?

Это код, который вы написали (в этом случае переполнение стека — это место для запроса — с кодом и сообщениями об ошибках), или вы запускаете чужую программу? Это поможет, если вы включите какие-либо сообщения об ошибках, которые вы получаете.

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

КАК 64 БИТНУЮ ИГРУ ЗАПУСТИТЬ НА 32 БИТНОЙ СИСТЕМЕ 2018

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

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

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

Читайте также:
Запуск программы невозможен так как на компьютере отсутствует o

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

  • Подтвердить , что приложение «AnyCPU»: corflags myExe.exe . Используя утилиту из .NET SDK для чтения заголовков сборки .NET, exe вернет что-то вроде:

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

  • Используйте corflags с его /32BITREQ+ опцией, чтобы изменить exe, чтобы быть только 32-битным.

+1 Настройка .Net AnyCPU была моей первой мыслью. Все, что требуется, — это неосведомленный программист, чтобы не указать этот параметр должным образом. Приятно слышать, что есть способ исправить это после компиляции.

Я попытался запустить его из, %SystemRoot%SYSWOW64cmd.exe и он потерпел неудачу таким же образом — показывая сообщение об ошибке — и когда я регистрируюсь в TaskManager, мой exe-процесс не отображается как 32-битный процесс

Как Дейв спросил выше, какое именно сообщение об ошибке вы получаете?

При запуске управляемого AnyCPU EXE SYSWOW64cmd.exe все еще он запускается как 64-битный процесс (я только что попробовал).

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

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

Как поставить 32 битную систему на 64 битную в играх

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

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

Удалите приложение «corflags.exe» в папку windows system32. Откройте командную строку как администратор и введите .

corflags «путь и имя exe» / 32BITPREF32 +

Читайте также:
Установил программу не запускается касперский

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

Источник: qastack.ru

Запуск 32-разрядных приложений

WOW64 — это эмулятор x86, который позволяет 32-разрядным приложениям Windows легко работать в 64-разрядной версии Windows. Это позволяет 32-разрядным (x86) приложениям Windows легко работать в 64-разрядной версии (x64) Windows, а также для 32-разрядных (x86) и 32-разрядных (ARM) приложений Windows для эффективного выполнения в 64-разрядной (ARM64) Windows. WOW64 предоставляется вместе с операционной системой и не должен быть явно включен. Дополнительные сведения см. в разделе Сведения о реализации WOW64.

Система изолирует 32-разрядные приложения от 64-разрядных приложений, что включает предотвращение конфликтов файлов и реестров. Поддерживаются консоль, графический интерфейс и приложения-службы. Система обеспечивает взаимодействие через границу 32/64 для таких сценариев, как вырезания и вставки и COM.

Однако 32-разрядные процессы не могут загружать 64-разрядные библиотеки DLL для выполнения, а 64-разрядные процессы не могут загружать 32-разрядные библиотеки DLL для выполнения. Это ограничение не применяется к библиотекам DLL, загруженным в виде файлов данных или файлов ресурсов изображений. Дополнительные сведения см. в разделе LoadLibraryEx.

32-разрядное приложение может определить, выполняется ли оно в WOW64, вызывая функцию IsWow64Process (используйте IsWow64Process2, если оно предназначено для Windows 10). Приложение может получить дополнительные сведения о процессоре с помощью функции GetNativeSystemInfo .

Обратите внимание, что 64-разрядная версия Windows не поддерживает запуск 16-разрядных приложений windows. Основная причина заключается в том, что дескриптор имеет 32 значимых бита в 64-разрядной версии Windows. Таким образом, дескрипторы не могут быть усечены и переданы в 16-разрядные приложения без потери данных. Попытки запуска 16-разрядных приложений завершаются сбоем со следующей ошибкой: ERROR_BAD_EXE_FORMAT.

В этом разделе

  • Производительность и потребление памяти в WOW64
  • Сведения о реализации WOW64
  • Перенаправитель реестра
  • Перенаправитель файловой системы
  • Управление памятью
  • Соответствие процессоров
  • Взаимодействие между процессами
  • Установка приложения
  • Отладка WOW64
Читайте также:
Как рисовать пиксель арт программы

Источник: learn.microsoft.com

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

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

изменён Dave 23k
задан Rory 938

4 ответа 4

  • Проверьте, что приложение «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+ чтобы изменить исполняемый файл только на 32- битный .

ответ дан Richard 8k

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

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

ответ дан SeanC 3k

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

ответ дан mdb 1

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

Удалите приложение «corflags.exe» в папку windows system32. Откройте командную строку как администратор и введите .

corflags «путь и имя exe» /32BITPREF32+

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

Источник: poweruser.guru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru