Отключить сбой диалогового окна приложения для вызванного процесса
Я запускаю процесс из приложения, чтобы контролировать его. Это может привести к сбою или зависанию.
Приложение для мониторинга подготовлено для этого и может справиться с этим.
Но на окнах сбоя отображается диалог сбоя приложения. В этот момент сбойный процесс все еще находится в списке процессов. Но диалоговое окно не исчезает, если процесс мониторинга будет остановлен приложением мониторинга (по истечении времени ожидания с 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).