Freigeben über


EventLogInstaller-Klasse

Ermöglicht Ihnen das Installieren und Konfigurieren eines Ereignisprotokolls, das die Anwendung während der Ausführung liest bzw. in das sie schreibt.

Namespace: System.Diagnostics
Assembly: System.Configuration.Install (in system.configuration.install.dll)

Syntax

'Declaration
Public Class EventLogInstaller
    Inherits ComponentInstaller
'Usage
Dim instance As EventLogInstaller
public class EventLogInstaller : ComponentInstaller
public ref class EventLogInstaller : public ComponentInstaller
public class EventLogInstaller extends ComponentInstaller
public class EventLogInstaller extends ComponentInstaller

Hinweise

Beim Installieren eines Ereignisprotokolls wird der EventLogInstaller vom Installer-Tool (Installutil.exe) verwendet. Die EventLogInstaller-Klasse kann Ereignisprotokolle nur auf dem lokalen Computer installieren.

Wenn die Anwendung in ein Ereignisprotokoll schreibt, verwenden Sie die EventLogInstaller-Klasse. Zum Lesen aus einem Ereignisprotokoll ist kein Installationsprogramm für Ereignisprotokolle für die Anwendung erforderlich. Anwendungen und Dienste schreiben in das Anwendungsprotokoll oder ein benutzerdefiniertes Protokoll. Gerätetreiber schreiben i. d. R. in das Systemprotokoll.

Hinweis

Das Sicherheitsprotokoll ist schreibgeschützt.

Das Installationsprogramm erstellt die von Ihnen in der Source-Eigenschaft spezifizierte Ereignisquelle und registriert diese für das in der Log-Eigenschaft angegebene Ereignisprotokoll. Dieses Verhalten ähnelt dem Aufruf von CreateEventSource für die EventLog-Komponente.

Verwenden Sie die WriteEvent-Methode und die WriteEntry-Methode, 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 Konfigurationen 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.

Sie können eine Ereignisquelle für ein vorhandenes oder für ein neues Ereignisprotokoll erstellen. Wenn Sie eine neue Quelle für ein neues Ereignisprotokoll erstellen, wird die Quelle für das Protokoll im System registriert, das Protokoll wird jedoch erst beim Schreiben des ersten Eintrags erstellt.

Erstellen Sie zum Installieren eines Ereignisprotokolls eine Projektinstallationsprogramm-Klasse, die von Installer erbt, und legen Sie das RunInstallerAttribute der Klasse auf true fest. Erstellen Sie für die einzelnen Ereignisprotokolle, in die die Anwendung schreiben soll, im Projekt einen EventLogInstaller, und fügen Sie diesen der Klasse des Projektinstallationsprogramms hinzu.

Bei Aufruf von Installer-Tool (Installutil.exe) wird RunInstallerAttribute geprüft. Wenn es true ist, installiert das Tool sämtliche Elemente der Installers-Auflistung, die dem Projektinstallationsprogramm zugeordnet sind. Wenn RunInstallerAttribute false ist, wird das Projektinstallationsprogramm vom Tool ignoriert.

Weitere Eigenschaften des EventLogInstaller können entweder vor oder nach dem Hinzufügen der Instanz zur Installers-Auflistung des Projektinstallationsprogramms, jedoch nur vor dem Ausführen des Installationsprogramms geändert werden. Sie müssen die Source-Eigenschaft festlegen, wenn die Anwendung in das Ereignisprotokoll schreiben soll.

Verwenden Sie EventLogInstaller zum Registrieren einer neuen Quelle für ein neues oder vorhandenes Ereignisprotokoll. EventLogInstaller darf nicht zum Ändern einer vorhandenen Quelle verwendet werden. Mit der EventLogInstaller-Klasse werden die Konfigurationseigenschaften einer vorhandenen Quelle nicht an die angegebenen Installationseigenschaften angepasst. Die Install-Methode löst eine Ausnahme aus, wenn die Source-Eigenschaft mit einem Quellnamen übereinstimmt, der für ein anderes Ereignisprotokoll auf dem Computer registriert ist. Die Quelle wird von der Install-Methode nicht registriert, wenn die Source-Eigenschaft mit einem Quellnamen identisch ist, der bereits für das gleiche, in der Log-Eigenschaft angegebene Ereignisprotokoll registriert ist.

Sie können die Ereignisquelle in mehreren lokalisierten Ressourcendateien für die Ereigniskategorie und Meldungszeichenfolgen registrieren. Die Anwendung kann Ereignisprotokolleinträge mit Ressourcenbezeichnern schreiben, anstatt die tatsächliche Zeichenfolge anzugeben. Die Ereignisanzeige sucht anhand des Ressourcenbezeichners und der aktuellen Spracheinstellungen nach der entsprechenden Zeichenfolge in der lokalisierten Ressourcendatei und zeigt sie an. Sie können für Ereigniskategorien, Meldungen und Parametereinfügezeichenfolgen jeweils eine eigene Datei registrieren, oder Sie können für alle drei Typen von Zeichenfolgen dieselbe Ressourcendatei registrieren. Mit den Eigenschaften CategoryCount, CategoryResourceFile, MessageResourceFile und ParameterResourceFile konfigurieren Sie die Quelle zum Schreiben lokalisierter Einträge in das Ereignisprotokoll. Wenn die Anwendung Zeichenfolgenwerte direkt in das Ereignisprotokoll schreibt, müssen Sie diese Eigenschaften 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 eine andere Quelle ohne Ressourcendateien, und verwenden Sie dann diese Quelle in der WriteEntry-Methode, um Zeichenfolgen mithilfe dieser Quelle direkt in das Ereignisprotokoll zu schreiben.

In der Regel werden die Methoden der EventLogInstaller-Klasse nicht über den Code, sondern nur vom Installationsprogramm Installutil.exe aufgerufen. Dieses Tool ruft die Install-Methode während des Installationsprozesses automatisch auf. Fehler werden ggf. behoben, indem die Rollback-Methode für das Objekt aufgerufen wird, das die Ausnahme generiert hat.

Hinweis zu Windows 98, Windows Millennium Edition: Ereignisprotokolle werden unter Windows 98 oder Windows Millennium Edition (Me) nicht unterstützt.

Beispiel

Im folgenden Codebeispiel werden die Installationseigenschaften für eine neue Ereignisquelle festgelegt. Im Codebeispiel werden der Quellname und der Name des Ereignisprotokolls festgelegt, außerdem wird EventLogInstaller zur Installers-Auflistung hinzugefügt.

Imports System
Imports System.Configuration.Install
Imports System.Diagnostics
Imports System.ComponentModel

<RunInstaller(True)>  _
Public Class MyEventLogInstaller
   Inherits Installer
   Private myEventLogInstaller As EventLogInstaller
   
   Public Sub New()

      ' Create an instance of an EventLogInstaller.
      myEventLogInstaller = New EventLogInstaller()

      ' Set the source name of the event log.
      myEventLogInstaller.Source = "NewLogSource"

      ' Set the event log that the source writes entries to.
      myEventLogInstaller.Log = "MyNewLog"

      ' Add myEventLogInstaller to the Installer collection.
      Installers.Add(myEventLogInstaller)
   End Sub 'New

   Public Shared Sub Main()
   End Sub 'Main
End Class 'MyEventLogInstaller
using System;
using System.Configuration.Install;
using System.Diagnostics;
using System.ComponentModel;

[RunInstaller(true)]
public class MyEventLogInstaller: Installer
{
    private EventLogInstaller myEventLogInstaller;

    public MyEventLogInstaller() 
    {
        // Create an instance of an EventLogInstaller.
        myEventLogInstaller = new EventLogInstaller();

        // Set the source name of the event log.
        myEventLogInstaller.Source = "NewLogSource";

        // Set the event log that the source writes entries to.
        myEventLogInstaller.Log = "MyNewLog";

        // Add myEventLogInstaller to the Installer collection.
        Installers.Add(myEventLogInstaller);   
    }

    public static void Main()
    {
    }
}
#using <System.dll>
#using <System.Configuration.Install.dll>

using namespace System;
using namespace System::Configuration::Install;
using namespace System::Diagnostics;
using namespace System::ComponentModel;

[RunInstaller(true)]
ref class MyEventLogInstaller: public Installer
{
private:
   EventLogInstaller^ myEventLogInstaller;

public:
   MyEventLogInstaller()
   {
      // Create an instance of an EventLogInstaller.
      myEventLogInstaller = gcnew EventLogInstaller;

      // Set the source name of the event log.
      myEventLogInstaller->Source = "NewLogSource";
         
      // Set the event log that the source writes entries to.
      myEventLogInstaller->Log = "MyNewLog";
         
      // Add myEventLogInstaller to the Installer collection.
      Installers->Add( myEventLogInstaller );
   }
};
import System.*;
import System.Configuration.Install.*;
import System.Diagnostics.*;
import System.ComponentModel.*;

/** @attribute RunInstaller(true)
 */
public class MyEventLogInstaller extends Installer
{
    private EventLogInstaller myEventLogInstaller;

    public MyEventLogInstaller()
    {
        // Create an instance of an EventLogInstaller.
        myEventLogInstaller = new EventLogInstaller();

        // Set the source name of the event log.
        myEventLogInstaller.set_Source("NewLogSource");

        // Set the event log that the source writes entries to.
        myEventLogInstaller.set_Log("MyNewLog");

        // Add myEventLogInstaller to the Installer collection.
        this.get_Installers().Add(myEventLogInstaller);
    } //MyEventLogInstaller

    public static void main(String[] args)
    {
    } //main
} //MyEventLogInstaller

Vererbungshierarchie

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.Configuration.Install.Installer
         System.Configuration.Install.ComponentInstaller
          System.Diagnostics.EventLogInstaller

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

EventLogInstaller-Member
System.Diagnostics-Namespace
EventLog-Klasse
CreateEventSource

Weitere Ressourcen

Installer-Tool (Installutil.exe)