Какой технический ответ вам нужен? Вы, вероятно, можете заставить 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 бита.