Придушення вікон повідомлення про помилку Архів

Machine Debug Manager Supports local and remote debugging for Visual Studio and script debuggers. Якщо ця служба є заборонена, розробники не будуть функцією належним чином.

Для лайв сервера йдемо в адміністрування->Служби, Machine Debug Manager, і ставимо тип запуску Вимкнено.

Завантажив програму, яка відключає "відладчика Dr. Watson". будемо пробувати :declare:

Відключення Dr.Watson Прискорити запуск програм та звільнити оперативну пам'ять можна, відключивши Dr.Watson. Звичайно, це можна робити тільки в тому випадку, якщо ви впевнені, що відладчик вам не знадобиться. Для цього в системному реєстрі (Пуск > Виконати > regedit) достатньо перейти в розділ HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug і визначити значення ключа Auto рівним 0. Або взагалі видалити цей розділ реєстру. (у мене на Він2к3 Ентерпрайз х64 чомусь не працює)

Чи можна дати посилання (або в атач сунути) цю "програму, яка відключає" на предмет пошуку тарганів?

у реєстрі HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ звіти про помилки Windows \ DontShowUI поміняй на 1 і все гуд

У зазначеній гілці *HKCU\Software\Microsoft\Windows\* є тільки гілки CurrentVersion, Shell та ShellNoRoam. Гілки "Звіти про помилки Windows" не існує. Більше того - повним пошуком реєстру взагалі не знайдено параметр "DontShowUI".

Відладчиком у голій венді є DrWatson, він і викидає вікно (після натискання кнопки в діалозі "черобити"). При встановленні VS – він видає своє вікно, яке можна відключити в налаштуваннях. Ось тільки діалогове вікно типу "у вас помилка - черобати" з'являється незалежно від того, який відладчик стоїть (бо воно з'являється перед відладчиком). А відключення у венді "звіту про помилки" - ніякне відноситься до цього діалогового вікна (як не шкода).

(Де я тут облажався?)

Загалом як відомо безвихідних ситуацій не буває трохи подумавши. Якщо написати такий завантажувач програми, то діалогове вікно з помилкою вилазити не буде, інфа 100% :yes3:

int _tmain(int argc, _TCHAR* argv[]) SetErrorMode(SEM_NOGPFAULTERRORBOX);

STARTUPINFO si; PROCESS_INFORMATION pi;

вся фішка у двох речах: 1) SetErrorMode(SEM_NOGPFAULTERRORBOX); - відключає діалоги про помилки у поточному додатку.

2) CreateProcess(_T("d:\\test.exe"),NULL,NULL,NULL,TRUE,0,NULL,NULL,&si,&pi)) параметр TRUE - обов'язковий, це прапор успадкування дочірнім процесом всіх властивостей процесу батька. Без нього все одно вилізе вікно про помилку

З.И. А, ну що перший рядок треба вставити в сервер мангоса, і все буде тип топ, помилка вилазити при краху не буде, і рестартер спокійно його перезапустить.

Є така гілка в реєстрі HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug У ній прописаний відладчик який викликається, і параметр Auto - якщо він 1, то відладчик завантажиться автоматично, якщо 0 - то буде віконце з питанням. Десятий пост гілки прочитай. :) Залишилося дізнатися як зовсім прибрати віконце Угу, що про це і страждаємо. :(

З.И. А, ну що перший рядок треба вставити в сервер мангоса, і все буде тип топ, помилка вилазити при краху не буде, і рестартер спокійно його перезапустить. А в яке саме місце? :) :) :)

че страждати те? рішення знайдено

в будь-яке, головне що вона виконалася до краху

ну ось навіщо розводити демагогію? функція SetErrorMode() - стандартна функція WINAPI, я сподіваюся в проект мангос (версія для вин) включенийзаголовок windows.h? ну й усі, які проблеми все компілюватиметься.

у будь-якій програмі на "с" є функція main() ось прямо першим рядком і вставляйте

якщо вище я незрозуміло написав вся фішка у двох речах: 1) SetErrorMode(SEM_NOGPFAULTERRORBOX); - відключає діалоги про помилки у поточному додатку.

повторю ще раз. виклик цієї функції з таким параметром SEM_NOGPFAULTERRORBOX, відключає виведення діалогу з помилкою під час краху програми Ось оригінал з MSDN :

Система не розкриває Windows Error Reporting dialog.

зробіть консольний додаток такий

int _tmain(int argc, _TCHAR* argv[]) //SetErrorMode(SEM_NOGPFAULTERRORBOX);

int *ptr = NULL; *ptr = 1;

і запустіть його. Отримали помилку?