Verwenden von WER

Ab Windows Vista bietet Windows standardmäßig Berichte zu Absturz-, Nichtantwort- und Kernelfehlern, ohne dass Änderungen an Ihrer Anwendung erforderlich sind. Der Bericht enthält bei Bedarf Minidump- und Heapdumpinformationen. Anwendungen verwenden stattdessen die WER-API, um anwendungsspezifische Problemberichte an Microsoft zu senden.

Da Windows nicht behandelte Ausnahmen automatisch meldet, sollte die Anwendung keine schwerwiegenden Ausnahmen behandeln. Wenn der fehlerbehaftete oder nicht reagierende Prozess interaktiv ist, zeigt WER eine Benutzeroberfläche an, die den Benutzer über das Problem informiert. Eine Anwendung wird als nicht reagiert, wenn sie fünf Sekunden lang nicht auf Windows-Nachrichten reagiert, während der Benutzer versucht, mit der Anwendung zu interagieren.

Windows-Fehlerberichterstattung Flow für Abstürze, Nichtantwort- und Kernelfehler

Im Folgenden werden die Schritte gezeigt, die für einen Anwendungsabsturz, eine Nichtantwort oder einen Kernelfehler ausgeführt werden.

  1. Das Problemereignis tritt auf.
  2. Das Betriebssystem ruft WER auf.
  3. WER sammelt die Daten, erstellt einen Bericht und fordert den Benutzer (bei Bedarf) zur Zustimmung auf.
  4. WER sendet den Bericht an Microsoft (Watson Server), wenn der Benutzer zustimmte.
  5. Wenn der Watson-Server zusätzliche Daten anfordert, sammelt WER die Daten und fordert den Benutzer zur Zustimmung auf (falls erforderlich).
  6. Wenn die Anwendung für die Wiederherstellung und den Neustart registriert wurde, führt WER die registrierten Rückruffunktionen aus, während die Daten komprimiert und an Microsoft gesendet werden (sofern der Benutzer zugestimmt hat).
  7. Wenn eine Antwort auf das Problem von Microsoft verfügbar ist, wird der Benutzer benachrichtigt.

Anwendungen können die folgenden Funktionen verwenden, um den Inhalt des Berichts anzupassen, der an Microsoft gesendet wird. Die Registrierungsfunktionen weisen WER an, die spezifischen Dateien und Speicherblöcke in den erstellten Fehlerbericht aufzunehmen.

Windows-Fehlerberichterstattung Flow für generische Ereignisberichte

Die folgenden Schritte zeigen, wie Anwendungen einen Fehlerbericht für eine nicht schwerwiegende Fehlerbedingung abrufen können.

  1. Das nicht schwerwiegende Problemereignis tritt auf.
  2. Die Anwendung erkennt das Ereignis und verwendet die folgende Sequenz von Funktionsaufrufen, um den Bericht zu generieren.
    1. Rufen Sie die Funktion WerReportCreate auf, um den Bericht zu erstellen.
    2. Rufen Sie die Funktion WerReportSetParameter auf, um die Berichtsparameter festzulegen.
    3. Rufen Sie die Funktion WerReportAddFile auf, um dem Bericht Dateien hinzuzufügen.
    4. Rufen Sie die Funktion WerReportAddDump auf, um dem Bericht (falls erforderlich) einen Minidump hinzuzufügen.
    5. Rufen Sie die WerReportSubmit-Funktion auf, um den Bericht zu senden.
    6. Rufen Sie WerReportCloseHandle auf, um Ressourcen freizugeben.
  3. Abhängig von den spezifischen Optionen, die beim Aufrufen der Funktionen in Schritt 2 verwendet werden, beendet WER die Fehlerberichterstattung. WER stellt sicher, dass die Berichterstellung in Übereinstimmung mit den vom Benutzer festgelegten Richtlinien erfolgt. Wer sendet beispielsweise den Bericht an Microsoft, stellt den Bericht in die Warteschlange und zeigt dem Benutzer die entsprechenden Benutzeroberflächen an.

Ausschließen einer Anwendung von Windows-Fehlerberichterstattung

Um Ihre Anwendung von der Windows-Fehlerberichterstattung auszuschließen, verwenden Sie die Funktion WerAddExcludedApplication . Verwenden Sie zum Wiederherstellen der Fehlerberichterstattung für Ihre Anwendung die Funktion WerRemoveExcludedApplication .

Automatisches Wiederherstellen von Daten und Neustarten einer fehlerhaften Anwendung

Eine Anwendung kann Application Recovery und Neustart verwenden, um Daten und Zustandsinformationen zu speichern, bevor die Anwendung aufgrund einer nicht behandelten Ausnahme beendet wird oder wenn die Anwendung nicht mehr reagiert. Die Anwendung wird bei Bedarf auch neu gestartet. Ausführliche Informationen finden Sie unter Anwendungswiederherstellung und Neustart.

Legacy-API

Eine Anwendung kann einen Fehler melden, indem sie die ReportFault-Funktion aufruft. Sie sollten die ReportFault-Funktion jedoch nicht verwenden, es sei denn, Sie haben eine sehr spezifische Anforderung, die das Standardverhalten der Fehlerberichterstattung des Betriebssystems nicht erfüllen kann.

Wenn die Fehlerberichterstattung aktiviert ist, zeigt das System dem Benutzer ein Dialogfeld an, das angibt, dass bei der Anwendung ein Problem aufgetreten ist und geschlossen wird. Wenn im HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug-Schlüssel ein Debugger konfiguriert ist, erhält der Benutzer die Möglichkeit, den Debugger zu starten. Der Benutzer hat auch die Möglichkeit, einen Bericht an Microsoft zu senden. Wenn der Benutzer den Bericht sendet, zeigt das System ein weiteres Dialogfeld an, das dem Benutzer für den Bericht dankt und einen Link zu weiteren Informationen bereitstellt.

Das Fehlerberichterstattungssystem unterstützt die folgenden Betriebsmodi.

Betriebsmodus BESCHREIBUNG
Shared Memory-Berichterstellung Wenn der Sicherheitskontext der Anwendung mit dem Sicherheitskontext des angemeldeten Benutzers identisch ist, verwendet das Fehlerberichterstattungssystem einen Block des freigegebenen Arbeitsspeichers für die Kommunikation. Dieser Modus kann nicht mit dem Manifestberichtsmodus verwendet werden.
Manifestberichterstellung Wenn der Sicherheitskontext der Anwendung nicht mit dem Sicherheitskontext des angemeldeten Benutzers identisch ist, verwendet das Fehlerberichterstattungssystem eine Datei für die Kommunikation. Dieser Modus wird auch verwendet, um nicht reagierende Anwendungen und Kernelfehler zu melden. Dieser Modus kann nicht mit dem Berichterstellungsmodus für gemeinsam genutzten Arbeitsspeicher verwendet werden.
Internetberichterstattung Das Fehlerberichterstattungssystem sendet alle Daten über das Internet an Microsoft. Dies ist der Standardbetriebsmodus. Es kann nicht mit dem Unternehmensberichtsmodus verwendet werden. Dieser Modus wird verwendet, wenn vom Administrator kein Unternehmensuploadpfad angegeben wird.
Unternehmensberichterstattung Das Fehlerberichterstattungssystem sendet alle Daten an eine Dateifreigabe, anstatt sie direkt an Microsoft hochzuladen. Dadurch können IT-Manager von Unternehmen Daten überprüfen, bevor sie an Microsoft gesendet werden. Dieser Modus wird verwendet, wenn vom Administrator ein Unternehmensuploadpfad angegeben wird. Es kann nicht mit dem Internetberichtsmodus verwendet werden.
Headless Reporting Das Fehlerberichterstattungssystem zeigt dem Benutzer keine Dialogfelder an. Dadurch können IT-Manager von Unternehmen jederzeit Fehlerberichte ihrer Mitarbeiter sammeln. Dieser Modus wird verwendet, wenn die Berichterstellung vom Administrator aktiviert ist, die Benachrichtigung jedoch deaktiviert ist. Es kann nur mit dem Unternehmensberichtsmodus verwendet werden.

Um Ihre Anwendung von der Fehlerberichterstattung auszuschließen, verwenden Sie die Funktion AddERExcludedApplication .