Отключить сбой диалогового окна приложения для вызванного процесса

Я запускаю процесс из приложения, чтобы контролировать его. Это может привести к сбою или зависанию.

Приложение для мониторинга подготовлено для этого и может справиться с этим.

Но на окнах сбоя отображается диалог сбоя приложения. В этот момент сбойный процесс все еще находится в списке процессов. Но диалоговое окно не исчезает, если процесс мониторинга будет остановлен приложением мониторинга (по истечении времени ожидания с TerminateProcess).

Я пытался отключить отчеты об ошибках Windows для этого приложения с помощью WerAddExcludedApplication а также WerRemoveExcludedApplication но это только удаляет возможность поиска решения в Интернете.

Я также не хочу полностью отключить WER.

Есть ли другой способ программно отключить этот диалог для данного исполняемого файла (он не всегда будет одинаковым)?

1 ответ

Я думаю, что вы ищете DontShowUI ключ реестра. Это оставит включенным Windows Error Reporting (WER) и просто ничего не выскакивает при незапланированном исключении.

DontShowUI (REG_DWORD) Возможные значения:

0 - пользовательский интерфейс (по умолчанию)

1 - Нет пользовательского интерфейса (включить или отключить WER UI)

Ссылка на настройки реестра WER: https://msdn.microsoft.com/en-us/library/windows/desktop/bb513638(v=vs.85).aspx

Вы можете установить это в реестре здесь (или также в HKEY_CURRENT_USER):

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting]
"DontShowUI"=dword:00000001

Если вы установите этот ключ и по-прежнему видите диалоговое окно для необработанного исключения, я бы порекомендовал поискать в реестре любое значение = DontShowUI, поскольку я иногда обнаруживал, что они установлены в нечетных местах (и приветствуются Windows).

Другие вопросы по тегам