Решение проблемы. Что делать, если не запускаются exe файлы в Windows.
Формат EXE
EXE применяется для названия файлов-исполнителей. Это сокращение английского «executable files» – исполняемый файл. Используется в операционных системах Microsoft Windows, MS-DOS. Его задача – запуск инсталляции (деинсталляции) софта на устройство. Для этого в нем записан сценарий и код, которые запустят процесс.
В файле EXE находятся:
- Стартовый блок установки.
- Данные для загрузчика файла.
- Ресурсы программы – графические, медиа-элементы в сжатом виде.
- Формы объектов – иконки программ, листы.
При открытии файла запускается автоматический процесс распаковки компонентов папки с приложением или загрузочного диска. Типичные примеры файлов .EXE – Setup.exe, Install.exe. Они входят в состав разных программ: игр, офисных и графических редакторов, других.
Файл может быть закодирован и сжат архиватором в самораспаковывающийся архив. Инсталляция проводится в ту же директорию или в указанную пользователем.
Создание файлов .EXE
Формат разработан в 1981 году для ОС MS-DOS. Пришел на смену формату .COM. Преимуществом было отсутствие ограничений и полноценное использование адресного пространства ЭВМ. Модернизации в формате происходили по мере появления новых компьютеров IBM PC с виртуальной памятью, новыми режимами переадресации и расширенной функциональностью. Обновленный и расширенный, формат по-прежнему применяется в современных Microsoft Windows.
На персональном компьютере с ОС Microsoft Windows затруднений при открытии файла не возникает (об исключениях ниже). Сложности будут, если у пользователя Linux, Mac OS или мобильное устройство. Частый вопрос – как открыть EXE файл для редактирования или просмотра. Разбираемся по порядку.
На компьютере
Как открыть файл .EXE зависит от операционной системы устройства. Если это версии ОС Microsoft Windows, то сложностей быть не должно – под эту ОС файлы и разрабатывались. В основном они запускаются автоматически, для просмотра содержимого можно применить ряд утилит. Сложнее задача решить на ОС Linux или Mac. Но и тут выходы есть. Разберем подробней.
ОС Microsoft Windows 7
Для запуска применяем двойной щелчок манипулятора. Файл начнет устанавливаться и распаковываться (если это архив). Для просмотра содержимого без инсталляции подойдут утилиты Windows:
- 7Zip – утилита для сжатия данных. Нужный файл выбирается при помощи пункта меню архиватора.
- VMware ThinApp – софт для просмотра и переноса программ на другие платформы.
- Microsoft Visual Studio – программа для разработки приложений.
- IcoFX – утилита для просмотра, изменения значков из файловых ресурсов.
Для редактирования файлов .EXE подойдет Resource Hacker и аналогичные программы. Это редактор с функцией доступа в исполнительные файлы (.EXE, .DLL) для просмотра и замены в них данных.
ОС Microsoft Windows 10
Программы и принцип применения аналогичны, описанным выше. Сложность может быть в некорректном редактировании реестра Windows. Поможет модификация конфигурационного Reg-файла. Для него скачивается архив, соответствующий версии ОС Microsoft Windows, он распаковывается и после перезагрузки ПК файл .EXE должен открываться.
ОС Mac
На ПК с этими ОС напрямую открыть и запустить файл с форматом .EXE невозможно. Потребуются программы-эмуляторы, которые запустят Windows и ее приложения на ОС Mac:
- VMware Workstation.
- Parallels Desktop.
- Oracle VM VirtualBox.
- Kronenberg WineBottler.
- CodeWeavers CrossOver.
- Cedega.
- Darwine.
Windows приложения работают с эмуляторами без сбоев, для переключения на установленную на компьютере ОС не нужно перезагружать ПК.
ОС Linux
Как и ОС Мас напрямую из Linux открыть .EXE не удастся. Применяются программы-эмуляторы Windows, указанные выше. После запуска виртуального сеанса Windows, файл будет открыт.
ОС Android
Как открыть EXE файл на Андроиде при том, что формат не предназначен для работы с ним? Структура и состав файлов EXE другой, прямой запуск невозможен. Есть два способа открыть файл:
- При помощи удаленного доступа.
- С программой-эмулятором Microsoft Windows.
Второй вариант проще. К таким утилитам относятся: BOCHS, Limbo, QEMU и другие. Принцип действий идентичен: скачать и установить приложение на мобильное устройство, запустить утилиту.
Симптомы
Получение ошибки или ничего не происходит при запуске EXE-файл в Windows 7 или Windows Vista. Кроме того появляется сообщение о том, что у вас есть вирус.
Описание
- При попытке запустить exe файл выскакивает окно с просьбой выбрать программу;
- Все exe файлы пытаются запуститься в одной и той же программе;
- При запуске программы ничего не происходит.
Комментарии 39
-
ИМХО, «Подробный разбор исполняемых файлов Windows» больше соответствует теме.
-
Немного не так 🙂 Для подробного разбора тут кое-какие детали упущены, но работа несомненно визуально приятная. Единственный терзающий лично меня вопрос — зачем она?
Для интересующихся темой:
www.zotteljedi.de/pub/pe.txt
(LUEVELSMEYER, «The PE file format»)
-
Привычный
Хард Виздом
хоть и устарел, но куда приятней читается и проще понимается.
-
Спасибо, хороший материал. Странно что не знал о нем. BTW, а каким годом он датируется?
-
Мне он был известен еще в 2004-м. Но сами знаете системный загрузчик описать в мануале сложный, тут лучшей командой послужит IDA. Ну а практика на corcami-файлах только отшлифует полученные знания 😉
-
-
-
-
-
marcus 21 июля 2012 в 03:56
+9
О. Подходящий случай, чтобы посоветовать
несколько
годных
статей
со старичка wasm.
-
Это не руководство, а общая схема. Здесь нет и 10%.
-
Присоединюсь, к примеру не разобраны:
* TLS
* Bound-ы
* Fixups
* Resourse-ы
* Delay-импорты
и др.
-
-
А потом пишете вири, ломающие половину файлов.
-
Плохой, негодный картинко. Ничего толком не понятно. Я уж было решил, что раз ничего не понимаю, в MZ-PE что-то новое нашли…
-
Помнится, когда я учился в университете, наш преподаватель по информатике обещал поставить зачет автоматом тем, кто скажет, почему все файлы начинаются с ‘MZ’… Наконец то я узнал,
кто
во всем этом виноват
🙂
-
Возможно Ваш препод хотел знать исторические причины.
Эти ‘MZ’ ничто иное как «Марк Збиковски». Когда перед Microsoft встала задача о разработке нового формата для исполнимых файлов, то они задались вопросом: «Раз для пользователей популярным расширением является ‘exe’, то как пояснить пользователю DOS-приложения, что этот файл не должен запускаться под DOS?». Ответом на этот вопрос был «Надо разработать минимальную программу под DOS с целью вывода надписи и поместить ее в новом формате файла». Именно по этой причине можно наблюдать эту минимальную программу, называемую в простонародье «DOS-стаб». Именно из-за решения о помещении dos-стаба в каждый исполнимый файл формата PE и приходится наблюдать этот рудимент ‘MZ’.-
VEG 22 июля 2012 в 15:12
Вот только не ясно, почему в Microsoft не сделали подобную заглушку для .NET приложений.
Windows XP при отсутствии .NET выдаёт:
Application Error
The application failed to initialize properly (0xc0000135). Click on OK to terminate the application.И как пользователю догадаться, что нужно установить .NET framework?
Интересно, какую ошибку выдаст Windows 7 при отсутствии .NET 4 и попытке запустить программу, использующую последнюю версию фреймворка.
-
>>почему в Microsoft не сделали подобную заглушку для .NET приложений.
Почитайте внимательней мат.часть на предмет развития и появления .NET. Эта технология развилась благодаря COM-технологии. А все эти Ко-Сервера, Ко-Клиенты ничто иное как исполнимые файлы прописанные в реестре.>>И как пользователю догадаться, что нужно установить .NET framework?
Это должен разработчик заботится. При написании инсталяционного скрипта для продукта он должен обнаружить нужное и выдать сообщение чего не хватает.-
VEG 22 июля 2012 в 18:23
Почитайте внимательней мат.часть на предмет развития и появления .NET. Эта технология развилась благодаря COM-технологии. А все эти Ко-Сервера, Ко-Клиенты ничто иное как исполнимые файлы прописанные в реестре.
Не связывался с COM, но хорошо представляю, как загружаются .net приложения. Система вместе с исполняемым файлом загружает mscoree.dll передаёт управление _CorExeMain, а не нативной точке входа в exe файле. На системах до Windows XP, где загрузчик не подозревает о существовании .net, исполняемый файл загружается обычным образом, и для того, чтобы .net приложения могли загружаться и в старых системах, в каждой сборке есть небольшой stub для Windows, состоящий из одной команды:
jmp _CorExeMain
Так вот что мешает написать вместо этой одной команды небольшую программу, которая бы определяла наличие .net, и при его отсутствии давала бы внятное сообщение об ошибке? А обучив загрузчик Windows XP распознавать и загружать .net сборки без участия этого jmp ничего не мешало также позаботиться о нормальном сообщении об ошибке.
Почему исполняемые файлы .net выводят внятную ошибку при попытке запуска под DOS, но под более новой Windows они не могут этого сделать? Для меня это загадка.
Это должен разработчик заботится. При написании инсталяционного скрипта для продукта он должен обнаружить нужное и выдать сообщение чего не хватает.
Да, так говорит Microsoft. Но пользователю никто не запрещает запустить уже установленную программу после переустановки операционной системы. Писали бы в ошибке тогда «Переустановите программу».
-
-
VEG 22 июля 2012 в 15:16
И да, ко всему этому все файлы .NET содержат в себе досовскую заглушку с «This program cannot be run in DOS mode». Хотя, ИМХО, уже давно досовский стаб можно было выкинуть, оставив только MZ заголовок со ссылкой на PE. А вот для Windows без .NET не помешал бы внятный обработчик. А ещё лучше. чтобы он предлагал скачать нужную версию .NET 🙂
-
Выкинуть полностью стаб не получится, поскольку его наличие — требование ОС Windows (к EXE), которая в свою очередь полна рудиментов и помимо этого.
-
VEG 22 июля 2012 в 16:33
Нет такого требования. Необходимо оставить DOS header, но при этом код, который выводит сообщение «This program cannot be run in DOS mode» можно выкинуть. Посмотрите любую демку 64k — там нет стандартной заглушки. Некоторые даже совмещают DOS заголовок и PE заголовок. Вот, поглядите:
www.phreedom.org/research/tinype/
-
O RLY? 🙂 первый же пример: «Smallest possible PE file: 97 bytes» начинается с 0x4D 0x5A
-
VEG 22 июля 2012 в 16:47
Читайте внимательно. MZ — это часть DOS заголовка. Заглушки, выводящей «This program cannot be run in DOS mode» там нет.
-
Ох… без MZ ваша «заглушка» и запускаться-то не будет 🙂 Это все (включая MZ) и есть stub-программа… и не важно, есть там потом вывод текста или нет.
-
VEG 22 июля 2012 в 17:22
Нет, stub-программы там нет, один только DOS заголовок без кода не может являться программой (нечего исполнять).
-
Ok. А зачем DOS-заголовок программе для WIN?
-
VEG 22 июля 2012 в 18:26
Так исторически сложилось. Загрузчик откажется загружать файл без сигнатуры MZ и может быть пары полей в DOS-заголовке.
-
А почему система откажется исполнять файлы без сигнатуры MZ в этом случае?
-
VEG 22 июля 2012 в 18:33
В каком случае? 🙂
-
В рассматриваемом гипотетическом…
-
VEG 22 июля 2012 в 18:49
Вы издеваетесь? Я же написал: так сложилось исторически.
Загрузчик ищет адрес заголовка PE в DOS заголовке, а перед этим очевидно проверяет корректность самого DOS заголовка (то же наличие сигнатуры MZ). Ну а DOS заголовок (как сложилось исторически) должен быть в начале файла.-
Все в жизни складывается «исторически», но это не отменяет причинно-следственную связь. Без DOS-заголовка EXE-файл для системы не является исполняемым, т.е. не является «программой». Поэтому система даже и не попытается что-то запустить не увидев эту комбинацию.
DOS-header — это заголовок DOS-программы (а именно ее декларативная часть), которую содержит в себе любой исполняемый EXE-файл в целях обратной совместимости.
К слову, COM-файлы никаких деклараций не содержат и например минимальная программа может занимать два байта (0xCD 0x20). С EXE это не так.
Таким образом, любой исполняемый файл WIN-программы содержит в себе полезного паразита в виде DOS-программы (заглушки, STUB и т.д.), который в системе DOS преспокойно запускается и завершает обработку исполняемого файла (для DOS все эти PE и далее — просто мусор). А в Windows система считывает offset PE, лежащего в зарезервированном поле DOS-заголовка. Но этот факт не дает права называть DOS-заголовок частью WIN-программы. DOS-заголвок — это часть DOS-программы.
p.s. В конце-концов у того же Luevelsmeyer’а: «For PE-files, it is a MS-DOS 2.0 compatible executable… that output an error message such as „this program needs windows NT“. You recognize a DOS-stub by validating the DOS-header, being a struct IMAGE_DOS_HEADER.»
-
VEG 22 июля 2012 в 19:28
Всё верно. Но никто ведь не мешает выкинуть весь код DOS-программы, оставив только DOS-заголовок (а точнее сигнатуру MZ и поле со смещением PE), что и сделано в примере запускаемого под Windows PE файла объёмом 97 байт.
-
🙂 Оставить DOS-заголовок !== выкинуть весь код DOS-программы
-
VEG 22 июля 2012 в 21:10
Тут зависит от того, что вы понимаете под программой.
com-файл — это чисто программный код. exe-файл — это пачка заголовков плюс код. Я понимаю так, что любая программа должна содержать код, а заголовки — это служебная информация. То есть, если мы выкидываем код заглушки для DOS, оставляя лишь заголовок — да, это больше не программа для DOS, это просто заголовок.
Вы же считаете, что заголовок — это уже программа. Но ведь такая программа не запустится под DOS, потому что у неё некорректная точка входа. Либо 0, либо какой-то случайный мусор (в случае наложения MZ и PE заголовков). Были бы там хотя бы mov ax, 4C00h и int 21h для корректного завершения пустой программы — вопросов бы не было.
В общем, предлагаю закончить этот глупый спор.-
Программа — это последовательность действий. Но и последовательность может иметь изначальные правила, которые являются неотъемлемой частью.
Декларация в заголовке — это также часть программы. Без DOS- и/или PE-заголовка ваш код в EXE тоже работать не будет, так как помимо прочего там важные параметры заданы — такие как выравнивания.
p.s. Я то как раз и не спорю, а пытаюсь показать где именно Вы не правы 🙂
-
-
-
-
-
-
-
-
Уже не только Windows-specific. Даже в EFI протолкнули ) Так что х.з. когда люди забудут эти ‘MZ’…
-
-
>>уже давно досовский стаб можно было выкинуть, оставив только MZ
Все эти «некрасивости» никак не мешают обычной и штатной работоспособности приложений, а если учесть что обычный стаб даже 200 байт не весит и вспомнив размеры современных жестких, то как-то глупо париться по этому поводу.>>А ещё лучше. чтобы он предлагал скачать нужную версию .NET 🙂
+1, заводи задачу в Мелкософт-баг-трекере!
-
-
xnodev 5 октября 2012 в 01:18
Либо ZM, абсолютно аналогично
-
-
deko 16 августа 2012 в 10:48
–1
Отличная работа. Но грузится долго… да и в работе мне вряд ли пригодиться )
-
deko 16 августа 2012 в 10:50
–1
Вот еслиб сделали такое про файлы с байткодом Java, Python или .NET, было бы более актуально.
-
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Создание ярлыка игры
Прежде чем создать ярлык игры, необходимо найти файл, который отвечает ее запуск. Все эти файлы имеют расширение
exe
, то есть значок запуска игры будет иметь следующий формат имени:
название.exe
Следует также сказать, что расширение
exe
может быть скрытым (не отображаться). Необходимый файл запуска находится в месте, которое вы указали во время установки – это может быть следующий путь:
C: Program Files название_игры название_название.exe
И так, необходимый файл вы нашли. Теперь создадим ярлык игры на рабочем столе. Создать ярлык можно несколькими методами – используйте какой-то один.
- Кликните правой клавишей мыши по значку. Найдите пункт Отправить – Рабочий стол (создать ярлык).
- Зажмите на клавиатуре комбинацию клавиш [Ctrl] + [Shift
- Зажмите на клавиатуре клавишу [Alt] и перетащите значок на рабочий стол.
Где используется формат EXE
Такие файлы использовались ранее и существуют сейчас в таких ОС, как MS-DOS, OS/2, Windows, Symbian и OpenVMS. Такие файлы задействуются в 16-, 32- и 64-разрядных ОС.
Основной частью файла exe является исполняемый код, но в дополнение к нему там могут содержаться такие элементы графики, как иконки, и другие данные. Поэтому в большинстве случаев никакой дополнительной программой пользоваться не придется — exe сам по себе программа. Однако есть ряд случаев, когда все же необходимо залезть в сам исполняемый файл. Что делать в таком случае?
Открыть с помощью Inno Setup Extractor
Inno Setup Extractor — это, пожалуй, самый простой инструмент для открытия exe-файлов для Android. После того, как Вы загрузите нужный exe-файл на свой телефон Android, просто скачайте и установите Inno Setup Extractor из Google Play Store, затем используйте браузер файлов, чтобы найти exe-файл, а затем откройте этот файл с помощью приложения.
Как открыть EXE-файл на «Андроиде»: простейшие методы
На сегодняшний день решить проблему запуска исполняемого файла программы в формате EXE можно как минимум двумя способами:
- использовать программный эмулятор;
- произвести запуск посредством удаленного доступа к компьютеру с Windows.
Оба метода достаточно просты. Но первый вариант выглядит более предпочтительным в том плане, что эмулятор стартует непосредственно на мобильном девайсе, а при удаленном подключении могут наблюдаться сбои со связью, задержка передачи звука или видео и т. д., ведь в большинстве случаев владелец смартфона или планшета использует беспроводное соединение Wi-Fi. При достаточно большой нагрузке на сеть проблем не избежать. Но для полноты понимания вопроса рассмотрим оба варианта.
Причина
Модификация конфигурационного файла. Обычно, из-за вируса или некорректного редактирования реестра Windows.
В некоторых случаях запуск блокируется антивирусной системой.
Возможные проблемы с файлами .EXE
Стоит быть внимательными при открытии файлов этого типа – они могут содержать в себе вирусное программное обеспечение. Получив файл от неизвестного отправителя, скачав с непроверенного источника, не стоит открывать его и запускать инсталляцию.
Файлы .EXE могут не работать, если рассчитаны на другую версию ОС Windows. Решение – в разделе «Свойства» файла зайти в пункт «Совместимость» и вручную изменить версию ОС. Не в 100% случаев, но такие действия помогают.
Если при запуске файла .EXE выдается сообщение об ошибке или действий нет, причиной могут быть настройки реестра Windows. При их изменении файл откроется.
Дополнительные сведения
Если это не решило проблему или щелчок мышью приводит к следующему результату EXE-файлов запускает неверное приложение, воспользуйтесь следующей статьей:
При выполнении EXE-файла на компьютере под управлением Windows файл может запустить другую программу
Нужна дополнительная помощь?
Последний вариант разблокировки не открывающихся msi и exe файлов
Вот пришло время и для последнего способа, который является рабочим на все 100%, но почти никто не рекомендует им пользоваться или делать это только в крайнем случае так, как данный вариант полностью отключает защиту компьютера от вредоносных файлов.
В общем, вы как всегда делаете на свой страх и риск, в независимости от того, кто и что вам порекомендовал, потому что никто кроме вас за это ответственности не несет.
Но, несмотря на это я просто не имею права не показать данный способ разблокировки exe файлов.
Что же, заходим в
Далее, «Безопасность» — «Другой…»
В параметрах находим пункт «запуск программ и небезопасных файлов» и включаем его, сохранив настройки кнопкой «ОК».
Должно появится окно с предупреждением о том, что включив данное свойство компьютер может подвергаться повышенному риску. Но, так как мы настроены окончательно избавиться от проблемы с накрывающимися файлами «exe» и «msi», соглашаемся и пробуем запустить установочный файл.
Обычно данный пример работает безотказно но, я конечно же, рекомендую попробовать сначала первый вариант ну, а данным способом уже воспользоваться в безысходности.
Ну, что с заблокированными «exe» файлами разобрались, если данная инструкция окажется для вас полезной, не забудьте нас поддержать подписавшись на наш Youtube канал и группу в ВК.
Источник: inforkomp.com.ua