Exe файл открывается и сразу закрывается

Обновлено: 04.07.2024

. when altering one's mind becomes as easy as programming a computer, what does it mean to be human.

8 марта 2020 г.

Как узнать, почему программа внезапно закрывается?

Иногда бывают ситуации, когда ваше приложение просто молча закрывается, и вы понятия не имеете почему. Как можно диагностировать подобные ситуации?

  • Плюсы: можно отдать программу клиенту, он её запустит как обычно, программа сделает диагностику. Т.е. клиенту не нужно ничего дополнительно делать. Иными словами, клиент может не сотрудничать с вами для диагностики;
  • Минусы: не любой выход можно диагностировать внутри самого процесса. Иногда всё настолько плохо, что система закроет процесс, у кода процесса не будет шансов на выполнение.
  • Плюсы: получится диагностировать любые выходы из приложения;
  • Минусы: программу нужно запускать под внешним процессом (отладчиком), клиента придётся проинструктировать, он должен сотрудничать с вами.

Диагностика внутри процесса

    ; ;
  1. В настройках EurekaLog перейдите на вкладку Features / Restart&Recovery и включите опцию Log application's exits;
  2. Запустите приложение и позвольте ему закрыться;
  3. Откройте папку с отчётами (из Windows: Пуск / Программы / EurekaLog / EurekaLog Bug Reports; или откройте папку %APPDATA%\Neos Eureka S.r.l\EurekaLog\Bug Reports\ ). Если вы меняли путь для папки с отчётами - открывайте его;
  4. В папке найдите отчёт от вашего приложения. Например: Bug Reports\Project1.exe\Project1_ExitLog.el .
  5. Вы можете добавить проверку существования этого файла при запуске приложения и автоматически отправлять его вам;
  6. Или же вы можете добавить имя этого файла к опции Additional files, чтобы он автоматически был добавлен в следующий отчёт об ошибке.
  • Эта функция не будет создавать отчёт о выходе через Halt (штатный выход);
  • Функция работает только для приложений, не для DLL;
  • Функция не сможет перехватить выход, инициированный внешним процессом;
  • Отчёты о выходе могут быть ложно-положительными. Например, если приложение выходит через TerminateProcess , но логически это - штатно. Например, при перезапуске по исключению. Поэтому будьте осторожны, если вы хотите показывать какой-то диалог при старте приложения при обнаружении отчёта о выходе;
  • Технически функция сделана как обёртка для RtlReportSilentProcessExit (только Vista+), либо (Windows XP и ранее) хуками на TerminateProcess и TerminateThread ;
  • Когда вы включаете EurekaLog для своего проекта, EurekaLog будет вызываться автоматически при фатальных исключениях. Поэтому вместо обычного тихого выхода вы можете получить отчёт об ошибке от EurekaLog.
  • ExceptionLog7.ProcessExitHandler 2244[17]
  • EInject.RtlReportSilentProcessExitHook 1166[12]
  • kernel32.TerminateProcess
  • Unit175.TForm1.Button1Click 43[1]
  • Controls.TControl.Click
  • .

Диагностика внешним отладчиком

Вместе с EurekaLog, а также с EurekaLog Tools Pack устанавливается утилита Threads Snapshot, которая предназначена для захвата стеков всех потоков приложения в определённый момент времени.

  1. Откройте консоль в папке C:\Program Files (x86)\Neos Eureka S.r.l\EurekaLog 7\Bin\ (или Bin64, если у вас - 64-разрядное приложение) под учётной записью администратора;
  2. Запустите:
    Где Project1.exe - имя вашей программы. Это может быть просто имя файла или полный путь к файлу. Эта команда зарегистрирует утилиту Threads Snapshot для мониторинга выхода из указанного процесса. Не закрывайте консоль, она ещё пригодится;
  3. Запустите приложение и позвольте ему закрыться;
  4. Вне выходе будет запущена утилита Threads Snapshot, которая соберёт информацию о выходе, а после подготовки отчёта - попросит его сохранить в файл;
  5. Запустите:
    Где Project1.exe - в точности тот же параметр, который вы указывали в п2. Эта команда отменит регистрацию мониторинга.
  • ntdll.NtWaitForSingleObject
  • kernel32.TerminateProcess
  • Unit175.TForm1.Button1Click 43[1]
  • Controls.TControl.Click
  • .

Вот список того, что вы можете попробовать сделать для дополнительной диагностики.


Странная проблема. Сформировал exe-файл. Лежит в папке с проектом.
Если его запускать из среды Visual FoxPro 9 командой "DO kr.exe" - то приложение работает - появляется мое диалоговое окно, можно работать. Но если запускать Exe-файл из Виндовса двойным щелчком, то появляется какое-то другое большее по размерам окно и сразу исчезает, я не успеваю посмотреть, что там. Приложение не работает.

Может кто-то сталкивался с такой проблемой? нужна помощь.


------------------
Часто бывает так, что есть над чем задуматься, а нечем.

Drunk_Kojote
Странная проблема. Сформировал exe-файл. Лежит в папке с проектом.
Если его запускать из среды Visual FoxPro 9 командой "DO kr.exe" - то приложение работает - появляется мое диалоговое окно, можно работать. Но если запускать Exe-файл из Виндовса двойным щелчком, то появляется какое-то другое большее по размерам окно и сразу исчезает, я не успеваю посмотреть, что там. Приложение не работает.

Может кто-то сталкивался с такой проблемой? нужна помощь.

Классика. У вас там поди форма какая-то главная появляться должна. Насчёт команды READ EVENTS читали где-нить ? А почитайте.

Исправлено: reware, 25.10.10 14:00

Спасибо за ответ. Начал использовать команды READ EVENTS. Но у меня возник еще вопрос. Команда READ EVENTS не всегда срабатывает.
Вот пример.
Вызываю первое окно и использую команду READ EVENTS:
Срабатывает. Дальше в этом окне есть кнопка которая выполняет следующее:

Получается очищаю события, чтобы можно было снова вызвать READ EVENTS. Потом вызывается окно answer и сразу же за ним открывается окно chs. Оператор READ EVENTS между окнами не срабатывает.

Подскажите что я делаю не так?

Команда Read Events должна быть в программе ОДНА. И пока что она у всех, кто ее правильно понимал и использовал, срабатывала и срабатывает.

Все спасибо, разобрался. READ EVENTS теперь одна, а вызов формы chs сделал во время удаления формы answer. На всякий случай. Формы еще бывают модальными. Если у них установить WindowType=1.
Тогда управление с команды do form .. будет передаваться на следующий оператор только когда форма будет закрыта. ssa
Команда Read Events должна быть в программе ОДНА.

Из этого правила есть исключения - и в них без проблем работает и несколько READ EVENTS (не одновременно, конечно же) Но это уже существенно более продвинутый уровень по сравнению с человеком только сегодня узнавшим вообще про READ EVENTS

Некоторые или все ваши приложения для Windows 10 не работают должным образом? Ранее я написал статью о том, как решить проблему отсутствия приложений Магазина Windows, и недавно у меня был клиент, который купил мне компьютер с Windows 10, где приложения Windows могли открываться, но затем сразу же закрывался.

Если у вас возникла проблема, когда приложение не загружается, возможно, это проблема с разрешениями. Есть множество причин, по которым приложения Магазина не запускаются и одна из них заключается в том, что разрешения для определенных папок Windows и параметров реестра были изменены вручную или с помощью групповой политики.

Вы можете решить эту проблему, проверив все разрешения для этих папок и параметров реестра и убедившись, что все они правильные. В этом посте я расскажу вам, как это сделать, чтобы снова запустить приложения из Магазина.

Журнал событий Windows 10

Вы можете подтвердить, является ли это причиной проблемы, открыв журнал событий и проверив код события 5961 в журнале событий. Вы можете открыть журнал событий, нажав Пуск и введя в журнал событий.

идентификатор события

Вам нужно будет перейти к следующему файлу журнала, чтобы увидеть, существует ли это конкретное событие:

Журналы приложений и служб Microsoft Windows Apps Microsoft-Windows-TWinUI / Операционные

Оказавшись там, вы увидите целую кучу событий, перечисленных там, вероятно, тысячи. Вы не можете вручную пройти через это, поэтому нажмите на кнопку «Найти» справа и введите 5961. Он будет искать в этом журнале и, если найдет что-нибудь, выделит эту строку. Дважды щелкните по строке, и вы должны увидеть некоторую информацию, как показано ниже:
Имя журнала: Microsoft-Windows-TWinUI / Операционный
Источник: Microsoft-Windows-Immersive-Shell
Код события: 5961
Уровень: Ошибка
Описание:
Активация приложения для контракта Windows.Launch завершилась ошибкой: приложение не запустилось.
Если событие существует, вы можете быть уверены, что это проблема с разрешениями для новой группы в Windows под названием Все пакеты приложений. Что такое все пакеты приложений? Ну, это похоже на встроенные группы администраторов или пользователей. Все пакеты приложений включают любое приложение магазина, установленное в Windows 10. Если эта группа не имеет разрешений для определенных папок и параметров реестра, это приведет к сбою запуска приложений магазина.

Во-первых, давайте исправим разрешения файловой системы. Это в основном проверка прав доступа к трем папкам: Program Files, Windows и Users.

Перейдите в Проводник, щелкните правой кнопкой мыши C: Windows и перейдите на вкладку Безопасность. Вот как это должно выглядеть с правильными разрешениями.

все разрешения пакетов приложений

Если это не то, что показывают ваши разрешения для каталога, нажмите кнопку «Дополнительно» в правом нижнем углу. В следующем диалоговом окне нажмите кнопку «Изменить разрешения».

изменить разрешения

Затем вы хотите нажать кнопку Добавить. Обратите внимание, что если кнопка Добавить недоступна, это, вероятно, означает, что все файлы принадлежат TrustedInstaller. Прочитайте мой предыдущий пост о том, как изменить разрешения, чтобы вы могли получить полный контроль над файлами и папками.

добавить разрешения

Здесь вам нужно нажать «Выбрать принципала», а затем ввести все пакеты приложений в поле имени объекта. Не забудьте нажать кнопку «Проверить имена», прежде чем нажимать «ОК».

выберите принципал

Убедитесь, что для параметра «Тип» задано значение «Разрешить» и «Применяется к этой папке, подпапкам и файлам». Под разрешениями, убедитесь, что у вас есть чтение и выполнение, список содержимого папки и чтение проверено. Затем нажмите ОК.

все разрешения приложения

Вы вернетесь на главный экран разрешений. Здесь вы должны убедиться, что отметили флажок Заменить все записи разрешений дочернего объекта на наследуемые записи разрешений этого объекта.

заменить дочерние разрешения

После того, как вы сделали это для каталога Windows, вам нужно сделать то же самое для C: Users и C: Program Files. Для C: Users все то же самое, за исключением того, что вы предоставляете группе Все пакеты приложений Полный доступ. Кроме того, если вы используете 64-разрядную версию Windows, вам необходимо сделать это и для C: Program Files (x86).

Исправление разрешений реестра

Для записей реестра откройте regedit, зайдя в Пуск и набрав regedit. После того, как вы его открыли, вам нужно проверить разрешения для HKEY_USERS. Щелкните правой кнопкой мыши HKEY_USERS и выберите «Разрешения».

разрешения пользователей hkey

Убедитесь, что у всех пакетов приложений есть разрешение на чтение.

разрешение на чтение

Теперь сделайте то же самое для HKEY_CLASSES_ROOT. Затем разверните HKEY_LOCAL_MACHINE и выполните проверку для ТС, SAM, ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ и СИСТЕМЫ.

Возможно, вам лучше просто перезагрузить Windows 10, но для этого потребуется заново установить все сторонние приложения. Вы можете сбросить Windows 10, перейдя в «Настройки», нажмите «Обновление и безопасность» и затем нажмите «Восстановление». Если вы пытаетесь изменить разрешения и сталкиваетесь с ошибками, оставьте комментарий, и мы постараемся помочь. Наслаждайтесь!

Многие начинающие пользователи сталкиваются с такой проблемой:

"Прекращена работа программы . "

И многих эта проблема раздражает.

Сейчас я вам расскажу,как справится с этой проблемой.


Подробности

Для начала разберёмся с возможными вариантами,из-за чего эта трабла возникает :

1. Установлено много стороннего ПО,которое "ест" ресурсы системы.

2. Программе не хватает оперативной памяти.

3. В системе не установлено необходимое ПО для "правильной" работы программы.

5. Проблема в самой программе.

6. При запуске программа обращается к какому-нибудь системному файлу,который может быть повреждён.

Теперь пройдёмся по каждому этому варианту:

1. Посмотрите будет ли программа вылетать в режиме "чистой" загрузки ,если в этом режиме всё нормально работает,то попробуем выявит виновника,среди всего установленного ПО, с помощью метода "половинного деления".

Зайдите в Конфигурацию системы -> Службы и включите половину служб и перезагрузитесь. Если проблема не появляется, причина в оставшихся отключенных службах. Если проблема воспроизводится, причина во включенных службах — отключите половину из них и снова перезагрузитесь. Тоже самое и для ПО в Автозагрузке.

2. Убедитесь,что у вас включён файл подкачки,для этого:

а) Нажмите Пуск –> Панель управления –> Система –> Все элементы панели управления –> Дополнительные параметры системы -> Дополнительно:

б) В разделе Быстродействие нажмите Параметр,откройте вкладку Дополнительно и нажмите Изменить;

в) И посмотрите,чтобы стояла галочка напротив надписи "Автоматически выбирать объём файла подкачки".

3. Убедитесь,что у вас установлено следующее ПО:

Для 32 (x86) bit'ных систем :

Для 64 bit'ных систем :

Потом после их установки установите все обновления,которые будут в Центре обновления Windows !

4. Проверьте систему на наличие "зловредов" с помощью Dr.Web CureIt.

5. Проблема может быть в самой программе:

а) Если у вас установлена пиратская версия программы (взломанная , RePack),то обращайтесь к тому,у кого вы ею скачали;

б) Если у вас установлена Beta-версия программы,удалите её и найдите законченную версию программы у разработчика :

в) Если у вас лицензионная версия программы,то обращайтесь в тех. поддержку производителя.

6. Определим,кто виноват в вылете программы,для этого:

а) Скачайте программу ProcDump и распакуйте её в папку C:\ProcDump;

б) Откройте командную строку от имени администратора и выполните:

  • C:\ProcDump\procdump.exe -accepteula -e -w [имя сбойного приложения] C:\ProcDump\

в) Как определить имя сбойного приложения:

1) зайдите в Панель управления -> Все элементы панели управления -> Центр поддержки ->Монитор стабильности системы -> Отчеты о проблемах.

2) Найдите событие,когда вылетело проблемное приложение,щёлкните по нему 2 раза левой кнопкой мыши и там вы увидите надпись "Имя приложения:

в) Запустите это приложение и дождитесь вылета.

г) После этого у вас появится файл с расширением .dmp в C:\ProcDump

д) Теперь заглянем в это дам (заглядывать в него можно также,как и и в дампы синих экранов Анализ причин возникновения BSOD при помощи Debugging Tools for Windows (только команда выгладит по другому: Kdfe -v [путь к дампу]).

е) Как определите,что за файл виноват - определите системный ли он или принадлежит сторонней программе (для этого достаточно его "погуглить ") ,если к сторонней программе,то определите к какой и удалит её.

Если файл системный,то запустите командную строку от имени администратора и выполните команду:

Дождитесь конца проверки и:

Если в конце проверки будет написано,что все файлы были восстановлены,то перезагрузитесь для их полного восстановления.
Если в конце проверки будет написано,что не все файлы были восстановлены,то:

Если у вас Windows 8/8.1,то вам достаточно в командной строке,запущенной от имени администратора, при подключённом интернете , выполнить команду:

Если у вас Windows 7,то обратимся к другой статье ( пишется ) за помощью.

Читайте также: