C # System.Diagnostics.Process: не удается запустить 32-битный исполняемый файл в 64-битной ОС
==============================================================================================

У меня есть 32-битный исполняемый файл, скомпилированный с Turbo Pascal. Мне нужно запустить его. Это работало хорошо, когда у меня была Windows 7 32-битная, но теперь я на Windows 7 64-битная, и я получаю следующее исключение:

Указанный исполняемый файл не является допустимым приложением для этой платформы ОС.

Чтобы убедиться, что он работает на 32-битных системах, я запустил программу C # на 32-битной платформе - она работает.

Итак, как я могу запустить 32-битный исполняемый файл в 64-битной ОС?

Спасибо

 никогда не было версии, которая могла бы создавать 32-битные исполняемые файлы. Для запуска 16-битного кода требуется виртуальная машина, которая использует поддержку эмуляции реального режима в ЦП ([виртуальный режим 8086](https://en.wikipedia.org/wiki/Virtual_8086_mode)). Эта эмуляция недоступна, если процессор работает в 64-битном режиме.

Вы не можете запускать 16-битные процессы в 64-битной операционной системе. Вы можете попытаться сделать это с[Эмулятор DOSBox](https://www.dosbox.com/).



 то вам нужно установить цель для вашего .NET-приложения на x86. Если он установлен как Любой ЦП, то он будет работать как 64-битный процесс в 64-битной ОС и, следовательно, не сможет запустить 32-битный процесс.

**Редактировать:** В этой статье MSDN объясняется, как изменить этот параметр:[http://msdn.microsoft.com/en-us/library/5b4eyb0k.aspx](https://msdn.microsoft.com/en-us/library/5b4eyb0k.aspx)

**Изменить 2:** Как указывает Гейб, не должно быть причины, по которой 64-битное приложение не может запустить 32-битную версию. Я знаю, что вы не можете использовать 32-битную DLL из 64-битного приложения. Просто подумал, что стоило бы попробовать, так как в документации не указано, существует ли такое же ограничение при использовании`System.Diagnostics.Process` запустить exe.



Я не думаю, что есть 64-битный компилятор для Turbo Pascal, поэтому я думаю, что ваш единственный выбор - скомпилировать ваше приложение, ориентированное на 32-битную среду.



C # Пример 1:

C # Пример 2: