Попробуйте установить для реестра следующее значение реестра в значение DWORD 2:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\ErrorMode = 2
Это повлияет на все процессы на машине.
Ссылка:
Как избавиться от всплывающих сообщений системы и приложения
Если у вас есть исходный код программы, которая аварийно завершает работу, вы можете предотвратить всплывающие окна, перехватывая все структурированные исключения и выходя из них, не открывая окно сообщения. Как это сделать, зависит от используемого языка программирования.
Если у вас нет источника, используйте функцию SetErrorMode в родительском элементе для подавления всплывающих окон. Режим ошибки наследуется подпроцессами. Вы должны установить для UseShellExecute значение false, чтобы это работало:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace SubProcessPopupError
{
class Program
{
[DllImport("kernel32.dll", SetLastError = true)]
static extern int SetErrorMode(int wMode);
static void Main(string[] args)
{
int oldMode = SetErrorMode(3);
Process p;
ProcessStartInfo ps = new ProcessStartInfo("crash.exe");
ps.UseShellExecute = false;
p = Process.Start(ps);
SetErrorMode(oldMode);
p.WaitForExit();
}
}
}
Если вы получаете диалоговое окно с надписью «Хотите отладку с использованием выбранного отладчика?», Вы можете отключить его, установив для этого параметра реестра значение 0.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Auto = 0
Однако я не думаю, что это произойдет, если вы установили режим ошибки на 3, как описано выше.