Wenn eine Anwendung unter Windows abstürzt und ein Debugger wie Visual Studio installiert ist, wird der folgende modale Dialog angezeigt:
[Titel: Microsoft Windows]
X hat aufgehört zu arbeiten
Ein Problem führte dazu, dass das Programm nicht mehr richtig funktionierte. Windows schließt das Programm und benachrichtigt Sie, wenn eine Lösung verfügbar ist.
[Debug] [Anwendung schließen]
Gibt es eine Möglichkeit, diesen Dialog zu deaktivieren? Das heißt, ist das Programm nur abgestürzt und brennt lautlos?
Mein Szenario ist, dass ich mehrere automatisierte Tests ausführen möchte, von denen einige aufgrund von Fehlern in der zu testenden Anwendung abstürzen. Ich möchte nicht, dass diese Dialoge den Automatisierungslauf blockieren.
Durchsuchen Ich glaube, ich habe die Lösung gefunden, um dies unter Windows XP zu deaktivieren, wodurch dieser Registrierungsschlüssel zerstört wird:
HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AeDebug \ Debugger
Dies funktionierte jedoch unter Windows Vista nicht.
Antworten:
Sie können die folgenden Registrierungseinträge festlegen, um Windows Error Reporting (WER) zu zwingen, einen Absturzspeicherauszug zu erstellen und die App zu schließen, anstatt Sie zum Debuggen des Programms aufzufordern:
Nachdem dies festgelegt wurde, sollten beim Absturz Ihrer Apps * .hdmp- und * .mdmp-Dateien angezeigt werden in:
quelle
Siehe hier:
http://msdn.microsoft.com/en-us/library/bb513638.aspx
regedit
DWORD HKLM oder HKCU \ Software \ Microsoft \ Windows \ Windows-Fehlerberichterstattung \ DontShowUI = "1"
wird WER stillschweigend melden. Dann können Sie einstellen
DWORD HKLM oder HKCU \ Software \ Microsoft \ Windows \ Windows-Fehlerberichterstattung \ Disabled = "1"
um zu verhindern, dass es mit MS spricht.
quelle
Ich bin nicht sicher, ob sich dies auf genau denselben Dialog bezieht, aber hier ist ein alternativer Ansatz von Raymond Chen :
quelle
Ich musste dies für die Release-Automatisierung unter Windows 64-Bit für Firefox deaktivieren und habe Folgendes getan:
Ähnlich verhält es sich mit dem Bericht zur Kundenerfahrung unter: http://www.blogsdna.com/2137/fix-windows-installer-explorer-update-has-stopped-working-in-windows-7.htm
quelle
In meinem Kontext möchte ich das Popup nur für meine Komponententests und nicht für das gesamte System unterdrücken. Ich habe festgestellt, dass eine Kombination von Funktionen erforderlich ist, um diese Fehler zu unterdrücken, z. B. das Abfangen nicht behandelter Ausnahmen, das Unterdrücken von Laufzeitprüfungen (z. B. die Gültigkeit des Stapelzeigers) und die Fehlermodus-Flags. Dies ist, was ich mit einigem Erfolg verwendet habe:
quelle
In der WPF-Anwendung
quelle
Sie müssen einen nicht behandelten Ausnahmefilter implementieren, der Ihre Anwendung einfach beendet, und diese Filterfunktion dann mit SetUnhandledExceptionFilter () festlegen .
Wenn Sie die sichere CRT verwenden, müssen Sie auch Ihren eigenen ungültigen Parameterhandler bereitstellen und diesen mit _set_invalid_parameter_handler () festlegen .
Dieser Blog-Beitrag enthält auch einige Informationen: http://blog.kalmbachnet.de/?postid=75
quelle
Während des Tests können Sie mit einem 'Debugger' wie ADPlus arbeiten, der auf viele nützliche Arten konfiguriert werden kann, um Daten (Minidumps) zu Fehlern zu erfassen und dennoch die oben genannten Probleme mit modalen Dialogen zu vermeiden.
Wenn Sie nützliche Informationen erhalten möchten, wenn Ihre App in der Produktion abstürzt, können Sie die Microsoft- Fehlerberichterstattung so konfigurieren , dass sie ADPlus-Daten ähnelt.
quelle
Dies ist keine direkte Antwort auf die Frage, da dies eine Problemumgehung ist und es darum geht, wie diese Funktion deaktiviert werden kann. In meinem Fall bin ich jedoch ein Benutzer auf einem Server mit eingeschränkten Berechtigungen und kann die Funktion nicht mit einer der folgenden Funktionen deaktivieren die anderen Antworten. Also brauchte ich eine Problemumgehung. Dies wird wahrscheinlich zumindest für einige andere funktionieren, die sich mit dieser Frage befassen.
Ich habe autohotkey portable verwendet und ein Makro erstellt, das einmal pro Minute überprüft, ob das Popup-Feld vorhanden ist, und in diesem Fall auf die Schaltfläche klickt, um das Programm zu schließen. In meinem Fall ist das ausreichend und lässt die Funktion für andere Benutzer aktiviert. Es erfordert, dass ich das Skript starte, wenn ich das gefährdete Programm ausführe, aber es funktioniert für meine Anforderungen.
Das Skript lautet wie folgt:
Bearbeiten: Eine schnelle Flagge. Wenn andere Dinge aktiv sind, scheint dies zu versuchen, Steuerelemente im Vordergrundfenster zu aktivieren - es soll es im Hintergrund an das Programm senden. Wenn ich eine Lösung finde, bearbeite ich diese Antwort, um sie wiederzugeben. Seien Sie jedoch vorerst vorsichtig, wenn Sie diese verwenden und versuchen, gleichzeitig andere Arbeiten an einer Maschine auszuführen.
quelle
Nachdem ich alles andere im Internet ausprobiert hatte, um den Just-in-Time-Debugger loszuwerden, fand ich einen einfachen Weg, der tatsächlich funktionierte, und ich hoffe, dass ich jemand anderem helfen kann.
Wechseln Sie zur Systemsteuerung. Gehen Sie zu Verwaltung. Wechseln Sie zu Dienste. Sehen Sie sich die Liste für Machine Debug Manager an. Klicken Sie mit der rechten Maustaste darauf und klicken Sie auf Eigenschaften. Suchen Sie auf der Registerkarte Allgemein nach Starttyp. Klicken Sie auf Deaktivieren. Klicken Sie auf Übernehmen und auf OK.
Ich habe die Debugger-Nachricht seitdem nicht mehr gesehen und mein Computer läuft einwandfrei.
quelle
Anstatt die Werte in der Registrierung zu ändern, können Sie die Fehlerberichterstattung unter Windows Server 2008 R2, Windows Server 2012 und Windows 8 vollständig deaktivieren mit:
serverWerOptin /disable
https://technet.microsoft.com/en-us/library/hh875648(v=ws.11).aspx
quelle