Придушення вікон повідомлення про помилку Архів
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;
і запустіть його. Отримали помилку?