Mit EventLog können Sie auf Windows-Ereignisprotokolle zugreifen, in denen Informationen über wichtige Software- und Hardwareereignisse gespeichert werden, und diese anpassen. Unter Verwendung von EventLog können Sie aus vorhandenen Protokollen lesen, Einträge in Protokolle schreiben, Ereignisquellen erstellen oder löschen, Protokolle löschen und auf Protokollereignisse reagieren. Ferner können Sie auch bei der Erstellung einer Ereignisquelle neue Protokolle erstellen.
Wichtiger Hinweis: |
|---|
Wenn Sie ein EventLog-Objekt erstellen, einen Eintrag schreiben und anschließend das EventLog-Objekt an teilweise vertrauenswürdigen Code übergeben, kann dies zu einem Sicherheitsproblem führen. Übergeben Sie nie ein Ereignisprotokollobjekt, z. B. ein EventLogEntry-Objekt oder ein EventLogEntryCollection-Objekt, an weniger vertrauenswürdigen Code. |
Wichtiger Hinweis: |
|---|
In Version1.0 und 1.1 von .NET Framework müssen unmittelbare Aufrufer dieser Klasse voll vertrauenswürdig sein. In Version 2.0 erfordert diese Klasse für bestimme Aktionen EventLogPermission. Es wird dringend empfohlen, EventLogPermission nicht für teilweise vertrauenswürdigen Code zu erteilen. Die Fähigkeit, das Ereignisprotokoll zu lesen und in dieses zu schreiben, erlaubt Code die Ausführung von Aktionen wie dem Ausgeben von Ereignisprotokollmeldungen im Namen einer anderen Anwendung. |
Wichtiger Hinweis: |
|---|
Das Erstellen oder Löschen einer Ereignisquelle erfordert die Synchronisierung des zugrunde liegenden Codes mithilfe eines benannten Mutex. Wenn eine Anwendung mit sehr weitreichenden Berechtigungen den benannten Mutex sperrt oder versucht, zu erstellen bzw. zu löschen, bewirkt eine Ereignisquelle, dass die Anwendung nicht mehr reagiert, bis die Sperre wieder aufgehoben wird. Um dieses Problem zu vermeiden, sollten Sie nicht vertrauenswürdigem Code niemals eineUnmanagedCode-Berechtigung gewähren. Darüber hinaus ermöglicht die UnmanagedCode-Berechtigung das Umgehen anderer Berechtigungen und sollte daher nur sehr vertrauenswürdigem Code gewährt werden. |
Geben Sie zum Lesen aus einem Protokoll den Log-Namen und den MachineName (Name des Servercomputers) für das EventLog an. Source muss nicht angegeben werden, da nur für das Schreiben in Protokolle eine Quelle erforderlich ist. Der Entries-Member wird automatisch mit der Liste der Einträge des Ereignisprotokolls aufgefüllt.
Hinweis: |
|---|
Sie müssen keinen MachineName angeben, wenn Sie beim Verbindungsaufbau mit einem Protokoll ein Log/MachineName-Paar angeben. Wenn Sie keinen MachineName angeben, wird der lokale Computer (".") verwendet. |
Wenn Sie in ein Ereignisprotokoll schreiben, müssen Sie eine Source für ein Ereignis angeben oder erstellen. Sie benötigen Administratorrechte für den Computer, um eine neue Ereignisquelle zu erstellen. Die Source registriert die Anwendung im Ereignisprotokoll als gültige Quelle für Einträge. Sie können mit Source zu einem Zeitpunkt in nur ein Protokoll schreiben. Source kann eine beliebige Zeichenfolge sein, der Name muss sich jedoch von dem anderer Quellen auf dem Computer unterscheiden. Üblicherweise besteht der Name der Quelle aus dem Namen der Anwendung oder einer anderen bezeichnenden Zeichenfolge. Beim Versuch, einen doppelten Source-Wert zu erstellen, wird eine Ausnahme ausgelöst. Ein einzelnes Ereignisprotokoll kann jedoch mehreren Quellen zugeordnet werden.
Hinweis: |
|---|
Anwendungen können nicht daran gehindert werden, Schreibvorgänge wie jede andere registrierte Quelle auszuführen. Wenn einer Anwendung die Write-Berechtigung gewährt wird, kann sie Ereignisse für jede auf dem Computer registrierte gültige Quelle schreiben. |
Anwendungen und Dienste schreiben in das Anwendungsprotokoll oder ein benutzerdefiniertes Protokoll. Gerätetreiber schreiben i. d. R. in das Systemprotokoll. Wenn Sie die Log-Eigenschaft nicht explizit festlegen, ist das Standardereignisprotokoll das Anwendungsprotokoll.
Hinweis: |
|---|
Das Sicherheitsprotokoll ist schreibgeschützt. |
Verwenden Sie WriteEvent und WriteEntry, um Ereignisse in ein Ereignisprotokoll zu schreiben. Sie müssen zum Schreiben von Ereignissen eine Ereignisquelle angeben. Bevor Sie den ersten Eintrag mit der Quelle schreiben, müssen Sie die Ereignisquelle erstellen und konfigurieren.
Erstellen Sie die neue Ereignisquelle während der Installation der Anwendung. So hat das Betriebssystem Zeit, die Liste der registrierten Ereignisquellen und deren Konfiguration zu aktualisieren. Wenn die Liste der Ereignisquellen vom Betriebssystem nicht aktualisiert wurde und Sie versuchen, ein Ereignis für die neue Quelle zu schreiben, schlägt der Schreibvorgang fehl. Sie können eine neue Quelle entweder mithilfe eines EventLogInstaller oder mithilfe der CreateEventSource-Methode erstellen. Sie benötigen Administratorrechte für den Computer, um eine neue Ereignisquelle zu erstellen.
Jede Quelle kann immer nur in ein Ereignisprotokoll schreiben. Die Anwendung kann jedoch mehrere Quellen verwenden, um in mehrere Ereignisprotokolle zu schreiben. Beispielsweise müssen für die Anwendung eventuell mehrere Quellen für unterschiedliche Ereignisprotokolle oder Ressourcendateien konfiguriert werden. Wenn Sie die Konfiguration einer vorhandenen Quelle ändern möchten, müssen Sie sie löschen und mit der neuen Konfiguration neu erstellen. Wenn andere Anwendungen oder Komponenten die vorhandene Quelle nutzen, erstellen Sie eine neue Quelle mit der aktualisierten Konfiguration, anstatt die vorhandene Quelle zu löschen.
Sie können die Ereignisquelle in mehreren lokalisierten Ressourcen für die Ereigniskategorie und Meldungszeichenfolgen registrieren. Die Anwendung kann Ereignisprotokolleinträge mit Ressourcenbezeichnern schreiben, anstatt die tatsächlichen Zeichenfolgenwerte anzugeben. Weitere Informationen über das Konfigurieren der Quelle mit Ressourcendateien finden Sie unter der EventLogInstaller-Klasse und der EventSourceCreationData-Klasse.
Wenn die Anwendung Zeichenfolgenwerte direkt in das Ereignisprotokoll schreibt, müssen Sie die Eigenschaften der Ressourcendatei für die Quelle nicht festlegen. Die Quelle muss entweder zum Schreiben lokalisierter Einträge oder zum Schreiben direkter Zeichenfolgen konfiguriert werden. Wenn die Anwendung beim Schreiben von Einträgen sowohl Ressourcenbezeichner als auch Zeichenfolgenwerte verwendet, müssen Sie zwei getrennte Quellen registrieren. Konfigurieren Sie beispielsweise eine Quelle mit Ressourcendateien, und verwenden Sie diese Quelle dann in der WriteEvent-Methode, um Einträge mithilfe von Ressourcenbezeichnern in das Ereignisprotokoll zu schreiben. Erstellen Sie dann eine andere Quelle ohne Ressourcendateien, und verwenden Sie diese Quelle in der WriteEntry-Methode, um Zeichenfolgen mithilfe dieser Quelle direkt in das Ereignisprotokoll zu schreiben.
Beim Schreiben von Ereignissen müssen Sie mindestens eine Meldungszeichenfolge oder den Ressourcenbezeichner für eine Meldungszeichenfolge angeben. Weitere Ereigniseigenschaften sind optional. Beispielsweise können folgende optionalen Ereigniseinstellungen festgelegt werden: Sie können den EventLogEntryType festlegen, um das von der Ereignisanzeige für den Eintrag angezeigte Symbol anzugeben. Sie können einen Kategoriebezeichner für das Ereignis angeben, wenn die Anwendung die Ereignisse mithilfe von Kategorien filtert. Sie können auch Binärdaten an den Ereigniseintrag anfügen, wenn Sie einem bestimmten Ereignis weitere Informationen zuordnen müssen.
Neben dem Zugriff auf einzelne Ereignisprotokolle und deren Einträge ermöglicht die EventLog-Klasse auch den Zugriff auf die Auflistung aller Ereignisprotokolle. Mit den static-Membern von EventLog können Sie Protokolle löschen, Protokolllisten abrufen, eine Quelle erstellen bzw. löschen oder bestimmen, ob ein Computer bereits eine bestimmte Quelle enthält.
Es gibt drei Standardereignisprotokolle: Anwendung, System und Sicherheit. Andere installierte Anwendungen und Dienste wie Active Directory verfügen möglicherweise über zusätzliche Ereignisprotokolle. Sie können mit EventLog benutzerdefinierte Ereignisprotokolle erstellen, die Sie in der Ereignisanzeige des Servers anzeigen lassen können. Mit der RegisterDisplayName-Methode zeigen Sie einen lokalisierten Namen für das Ereignisprotokoll in der Ereignisanzeige an. Mit der ModifyOverflowPolicy-Methode konfigurieren Sie das Verhalten des Ereignisprotokolls, wenn dessen maximale Protokollgröße erreicht wird.
Das Protokollieren von Ereignissen beansprucht Speicherplatz, Prozessorzeit und andere Systemressourcen. Sie sollten daher nur wichtige Informationen protokollieren. Es wird empfohlen, dass Sie Aufrufe des Ereignisprotokolls in einem Pfad für Fehler und nicht im Hauptpfad des Codes platzieren, um die Leistung nicht zu beeinträchtigen.
Eine Liste der anfänglichen Eigenschaftenwerte für eine Instanz von EventLog finden Sie unter dem EventLog-Konstruktor.
Hinweis zu Windows 98, Windows Millennium Edition:
Ereignisprotokolle werden unter Windows 98 oder Windows Millennium Edition (Me) nicht unterstützt.