Mam aplikację, która obsługuje pewien niestabilny kod strony trzeciej, którego nie mogę kontrolować w zewnętrznym procesie, aby chronić moją główną aplikację przed nieprzyjemnymi błędami, które ona ujawnia. Mój proces macierzysty monitoruje drugi proces i robi "właściwą rzecz (tm)", gdy zawiedzie.Wyłączanie zgłaszania błędów systemu Windows (Dr Watson) dla mojego procesu
Problem, który mam, polega na tym, że doktor Watson wciąż wykrywa awarie w odizolowanym procesie i przywiązuje się do procesów po drodze, aby wykonać awaryjny zrzut. Ma to dwa następujące problemy: 1. Dramatyczne spowolnienie czasu potrzebnego mi do wykrycia awarii, ponieważ proces pozostaje żywy podczas wykonywania zrzutu awaryjnego. 2. Wyświetlanie irytujących wyskakujących okienek do użytkownika z pytaniem, czy chce przesłać raporty o błędach do firmy Microsoft.
Oczywiście wolałbym naprawić błędy w procesie potomnym, ale biorąc pod uwagę, że nie jest to opcja, chciałbym być w stanie selektywnie wyłączyć Dr. Watson (i Windows Error Reporting w Vista +) dla tego procesu .
Używam trochę mojego własnego kodu w procesie przed przekazaniem do niezaufanego bitu, więc jeśli istnieje interfejs API, który mogę wywołać, wpływa na bieżący proces, który byłby w porządku.
Jestem świadomy: http://support.microsoft.com/default.aspx/kb/188296, który wyłączałby Dr. Watsona dla całej maszyny. Nie chcę tego robić, ponieważ spowodowałoby to, że jestem złym obywatelem, który zniszczyłby maszynową scenerię.
Jestem również świadomy opcji WerSetFlags w Vista +, która wydaje się wyłączać zgłaszanie błędów systemu Windows dla bieżącego procesu, ale potrzebuję czegoś, co wyłączy Dr.Watson w starszych wersjach systemu operacyjnego.