У меня есть приложение, в котором размещен нестабильный сторонний код, который я не могу контролировать во внешнем процессе, чтобы защитить мое основное приложение от неприятных ошибок, которые оно демонстрирует. Мой родительский процесс контролирует другой процесс и делает "правильные вещи (tm)", когда он терпит неудачу.
Проблема, с которой я столкнулся, заключается в том, что доктор Ватсон все еще обнаруживает сбои в изолированном процессе и подключается к процессам на пути вниз, чтобы получить аварийный дамп. Это имеет две проблемы:
1. Значительно замедляет время, необходимое для обнаружения сбоя, потому что процесс остается активным, пока выполняется аварийный дамп.
2. Отображение назойливых всплывающих окон пользователю, спрашивающему, хотят ли они отправить отчеты об ошибках в Microsoft.
Я бы предпочел исправить ошибки в дочернем процессе, но, учитывая, что это не вариант, я хотел бы иметь возможность выборочно отключать Dr. Watson (и Windows Error Reporting в Vista +) для этого процесса.
Я выполняю часть своего собственного кода в процессе перед передачей ненадежному биту, поэтому, если есть API, который я могу вызвать, который влияет на текущий процесс, что будет хорошо.
Мне известно: http://support.microsoft.com/default.aspx/kb/188296, который отключил бы доктора Ватсона для всей машины. Я не хочу этого делать, потому что это сделало бы меня плохим гражданином, чтобы испортить настройки всей машины.
Мне также известна опция WerSetFlags в Vista +, которая может отключить отчеты об ошибках Windows для текущего процесса, но мне нужно что-то, что отключит Dr.Watson в более ранних версиях ОС.