provare a impostare il Registro di sistema seguente valore di registro al valore DWORD 2:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\ErrorMode = 2
questo influenzerà ogni processo sulla macchina.
Riferimento: How to Get Rid of System and Application Popup Messages
Se hai il codice sorgente per il programma che si blocca, è possibile impedire il popup con la cattura di tutte le eccezioni strutturate e uscire senza spuntando una finestra di messaggio. Il modo in cui lo fai dipende dal linguaggio di programmazione utilizzato.
Se non si dispone del sorgente, utilizzare la funzione SetErrorMode nel genitore per sopprimere i popup. La modalità di errore è ereditata dai sottoprocessi. È necessario impostare UseShellExecute false per questo lavoro: "Vuoi eseguire il debug utilizzando il debugger selezionato"
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();
}
}
}
Se hai trovato una finestra dicendo, si può spegnerlo impostando questo valore del Registro a 0 .
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Auto = 0
Tuttavia, non credo che questo si presenti se è stata impostata la modalità di errore di 3 come spiegato sopra.
fonte
2009-03-23 13:03:01
Sembra che questo dovrebbe funzionare, ma è un po 'come usare una spada per diffondere il burro. Questo programma dovrà essere eseguito sui computer di altre persone, quindi non è possibile modificare le proprietà dell'intero sistema :( – meatvest
Vedere il paragrafo aggiuntivo che ho aggiunto alla mia risposta.Se hai il codice sorgente ... prendi tutte le eccezioni –
quello che ha spinto la mia domanda in realtà è stato causato durante il caricamento dei riferimenti del programma - il metodo Main() non era nemmeno stato inserito - il che significa che l'eccezione era (per quanto ho capito) impossibile da catturare – meatvest