EventLog.CreateEventSource Methode

Definition

Richtet eine Anwendung so ein, dass diese Ereignisinformationen in ein bestimmtes Protokoll im System schreiben kann.

Überlädt

CreateEventSource(EventSourceCreationData)

Richtet mit den angegebenen Konfigurationseigenschaften für die Ereignisquelle und dem entsprechenden Ereignisprotokoll als gültige Ereignisquelle zum Schreiben lokalisierter Ereignismeldungen ein.

CreateEventSource(String, String)

Richtet den angegebenen Quellennamen als gültige Ereignisquelle für das Schreiben von Einträgen in ein Protokoll auf dem lokalen Computer ein. Diese Methode kann auch ein neues benutzerdefiniertes Protokoll auf dem lokalen Computer erstellen.

CreateEventSource(String, String, String)
Veraltet.
Veraltet.
Veraltet.

Richtet den angegebenen Quellennamen als gültige Ereignisquelle für das Schreiben von Einträgen in ein Protokoll auf dem angegebenen Computer ein. Mit dieser Methode kann auch ein neues benutzerdefiniertes Protokoll auf dem angegebenen Computer erstellt werden.

CreateEventSource(EventSourceCreationData)

Quelle:
EventLog.cs
Quelle:
EventLog.cs
Quelle:
EventLog.cs

Richtet mit den angegebenen Konfigurationseigenschaften für die Ereignisquelle und dem entsprechenden Ereignisprotokoll als gültige Ereignisquelle zum Schreiben lokalisierter Ereignismeldungen ein.

public:
 static void CreateEventSource(System::Diagnostics::EventSourceCreationData ^ sourceData);
public static void CreateEventSource (System.Diagnostics.EventSourceCreationData sourceData);
static member CreateEventSource : System.Diagnostics.EventSourceCreationData -> unit
Public Shared Sub CreateEventSource (sourceData As EventSourceCreationData)

Parameter

sourceData
EventSourceCreationData

Die Konfigurationseigenschaften für die Ereignisquelle und ihr Zielereignisprotokoll.

Ausnahmen

Der in sourceData angegebene Computername ist nicht gültig.

- oder -

Der in sourceData angegebene Dateiname ist null.

- oder -

Der in sourceData angegebene Protokollname ist nicht gültig. Ereignisprotokollnamen müssen aus druckbaren Zeichen bestehen und dürfen die Zeichen "*", "?" oder "\" nicht enthalten.

- oder -

Der in sourceData angegebene Protokollname ist für die Benutzerprotokollerstellung nicht gültig. Die Ereignisprotokollnamen AppEvent, SysEvent und SecEvent sind für die Verwendung durch das System reserviert.

- oder -

Der Protokollname stimmt mit einem vorhandenen Ereignisquellennamen überein.

- oder -

Der in sourceData angegebene Quellenname führt dazu, dass der Registrierungsschlüsselpfad länger als 254 Zeichen ist.

- oder -

Die ersten acht Zeichen des in sourceData angegebenen Protokollnamens sind nicht eindeutig.

- oder -

Der in sourceData angegebene Quellenname ist bereits registriert.

- oder -

Der in sourceData angegebene Quellenname stimmt mit einem vorhandenen Ereignisprotokollnamen überein.

Der Registrierungsschlüssel für das Ereignisprotokoll konnte nicht geöffnet werden.

sourceData ist null.

Beispiele

Im folgenden Beispiel wird ermittelt, ob die Ereignisquelle namens SampleApplicationSource auf dem lokalen Computer registriert ist. Wenn die Ereignisquelle nicht vorhanden ist, legt das Beispiel die Nachrichtenressourcendatei für die Quelle fest und erstellt die neue Ereignisquelle. Schließlich legt das Beispiel den lokalisierten Anzeigenamen für das Ereignisprotokoll unter Verwendung des Ressourcenbezeichnerwerts in DisplayNameMsgId und des Ressourcendateipfads in messageFilefest.

void CreateEventSourceSample1( String^ messageFile )
{
   String^ myLogName;
   String^ sourceName = "SampleApplicationSource";
   
   // Create the event source if it does not exist.
   if (  !EventLog::SourceExists( sourceName ) )
   {
      
      // Create a new event source for the custom event log
      // named "myNewLog."  
      myLogName = "myNewLog";
      EventSourceCreationData ^ mySourceData = gcnew EventSourceCreationData( sourceName,myLogName );
      
      // Set the message resource file that the event source references.
      // All event resource identifiers correspond to text in this file.
      if (  !System::IO::File::Exists( messageFile ) )
      {
         Console::WriteLine( "Input message resource file does not exist - {0}", messageFile );
         messageFile = "";
      }
      else
      {
         
         // Set the specified file as the resource
         // file for message text, category text, and 
         // message parameter strings.  
         mySourceData->MessageResourceFile = messageFile;
         mySourceData->CategoryResourceFile = messageFile;
         mySourceData->CategoryCount = CategoryCount;
         mySourceData->ParameterResourceFile = messageFile;
         Console::WriteLine( "Event source message resource file set to {0}", messageFile );
      }

      Console::WriteLine( "Registering new source for event log." );
      EventLog::CreateEventSource( mySourceData );
   }
   else
   {
      
      // Get the event log corresponding to the existing source.
      myLogName = EventLog::LogNameFromSourceName( sourceName, "." );
   }

   
   // Register the localized name of the event log.
   // For example, the actual name of the event log is "myNewLog," but
   // the event log name displayed in the Event Viewer might be
   // "Sample Application Log" or some other application-specific
   // text.
   EventLog^ myEventLog = gcnew EventLog( myLogName,".",sourceName );
   if ( messageFile->Length > 0 )
   {
      myEventLog->RegisterDisplayName( messageFile, DisplayNameMsgId );
   }   
}
static void CreateEventSourceSample1(string messageFile)
{
    string myLogName;
    string sourceName = "SampleApplicationSource";

    // Create the event source if it does not exist.
    if(!EventLog.SourceExists(sourceName))
    {
        // Create a new event source for the custom event log
        // named "myNewLog."

        myLogName = "myNewLog";
        EventSourceCreationData mySourceData = new EventSourceCreationData(sourceName, myLogName);

        // Set the message resource file that the event source references.
        // All event resource identifiers correspond to text in this file.
        if (!System.IO.File.Exists(messageFile))
        {
            Console.WriteLine("Input message resource file does not exist - {0}",
                messageFile);
            messageFile = "";
        }
        else
        {
            // Set the specified file as the resource
            // file for message text, category text, and
            // message parameter strings.

            mySourceData.MessageResourceFile = messageFile;
            mySourceData.CategoryResourceFile = messageFile;
            mySourceData.CategoryCount = CategoryCount;
            mySourceData.ParameterResourceFile = messageFile;

            Console.WriteLine("Event source message resource file set to {0}",
                messageFile);
        }

        Console.WriteLine("Registering new source for event log.");
        EventLog.CreateEventSource(mySourceData);
    }
    else
    {
        // Get the event log corresponding to the existing source.
        myLogName = EventLog.LogNameFromSourceName(sourceName,".");
    }

    // Register the localized name of the event log.
    // For example, the actual name of the event log is "myNewLog," but
    // the event log name displayed in the Event Viewer might be
    // "Sample Application Log" or some other application-specific
    // text.
    EventLog myEventLog = new EventLog(myLogName, ".", sourceName);

    if (messageFile.Length > 0)
    {
        myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId);
    }
}
Public Shared Sub CreateEventSourceSample1(ByVal messageFile As String)

    Dim myLogName As String
    Dim sourceName As String = "SampleApplicationSource"

    ' Create the event source if it does not exist.
    If Not EventLog.SourceExists(sourceName)
    
        ' Create a new event source for the custom event log
        ' named "myNewLog."  

        myLogName = "myNewLog"
        Dim mySourceData As EventSourceCreationData = New EventSourceCreationData(sourceName, myLogName)

        ' Set the message resource file that the event source references.
        ' All event resource identifiers correspond to text in this file.
        If Not System.IO.File.Exists(messageFile)

            Console.WriteLine("Input message resource file does not exist - {0}", _
                messageFile)
            messageFile = ""
        Else 
            ' Set the specified file as the resource
            ' file for message text, category text and 
            ' message parameters strings.

            mySourceData.MessageResourceFile = messageFile
            mySourceData.CategoryResourceFile = messageFile
            mySourceData.CategoryCount = CategoryCount
            mySourceData.ParameterResourceFile = messageFile

            Console.WriteLine("Event source message resource file set to {0}", _
                messageFile)
        End If

        Console.WriteLine("Registering new source for event log.")
        EventLog.CreateEventSource(mySourceData)
    Else
        ' Get the event log corresponding to the existing source.
        myLogName = EventLog.LogNameFromSourceName(sourceName,".")
    End If

    ' Register the localized name of the event log.
    ' For example, the actual name of the event log is "myNewLog," but
    ' the event log name displayed in the Event Viewer might be
    ' "Sample Application Log" or some other application-specific
    ' text.
    Dim myEventLog As EventLog = New EventLog(myLogName, ".", sourceName)
    
    If messageFile.Length > 0
        myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId)
    End If
End Sub

Im Beispiel wird die folgende Meldungstextdatei verwendet, die in die Ressourcenbibliothek EventLogMsgs.dll integriert ist. Eine Nachrichtentextdatei ist die Quelle, aus der die Nachrichtenressourcendatei erstellt wird. Die Nachrichtentextdatei definiert die Ressourcenbezeichner und den Text für die Kategorie, die Ereignismeldung und die Parametereinfügungszeichenfolgen. Insbesondere wird der Ressourcenbezeichner 5001 für den lokalisierten Namen des Ereignisprotokolls definiert.

; // EventLogMsgs.mc  
; // ********************************************************  

; // Use the following commands to build this file:  

; //   mc -s EventLogMsgs.mc  
; //   rc EventLogMsgs.rc  
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res   
; // ********************************************************  

; // - Event categories -  
; // Categories must be numbered consecutively starting at 1.  
; // ********************************************************  

MessageId=0x1  
Severity=Success  
SymbolicName=INSTALL_CATEGORY  
Language=English  
Installation  
.  

MessageId=0x2  
Severity=Success  
SymbolicName=QUERY_CATEGORY  
Language=English  
Database Query  
.  

MessageId=0x3  
Severity=Success  
SymbolicName=REFRESH_CATEGORY  
Language=English  
Data Refresh  
.  

; // - Event messages -  
; // *********************************  

MessageId = 1000  
Severity = Success  
Facility = Application  
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000  
Language=English  
My application message text, in English, for message id 1000, called from %1.  
.  

MessageId = 1001  
Severity = Warning  
Facility = Application  
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001  
Language=English  
My application message text, in English, for message id 1001, called from %1.  
.  

MessageId = 1002  
Severity = Success  
Facility = Application  
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002  
Language=English  
My generic information message in English, for message id 1002.  
.  

MessageId = 1003  
Severity = Warning  
Facility = Application  
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003  
Language=English  
My generic warning message in English, for message id 1003, called from %1.  
.  

MessageId = 1004  
Severity = Success  
Facility = Application  
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004  
Language=English  
The update cycle is complete for %%5002.  
.  

MessageId = 1005  
Severity = Warning  
Facility = Application  
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005  
Language=English  
The refresh operation did not complete because the connection to server %1 could not be established.  
.  

; // - Event log display name -  
; // ********************************************************  

MessageId = 5001  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID  
Language=English  
Sample Event Log  
.  

; // - Event message parameters -  
; //   Language independent insertion strings  
; // ********************************************************  

MessageId = 5002  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID  
Language=English  
SVC_UPDATE.EXE  
.  

Hinweise

Verwenden Sie diese Überladung, um eine neue Quelle zum Schreiben von Einträgen in ein Ereignisprotokoll auf dem lokalen Computer oder einem Remotecomputer zu konfigurieren. Es ist nicht erforderlich, diese Methode zu verwenden, um aus einem Ereignisprotokoll zu lesen.

Die CreateEventSource -Methode verwendet die EingabesourceDataSource- und MachineName -Eigenschaften, LogName um Registrierungswerte auf dem Zielcomputer für die neue Quelle und das zugehörige Ereignisprotokoll zu erstellen. Ein neuer Quellname kann nicht mit einem vorhandenen Quellnamen oder einem vorhandenen Ereignisprotokollnamen auf dem Zielcomputer übereinstimmen. Wenn die LogName -Eigenschaft nicht festgelegt ist, wird die Quelle für das Anwendungsereignisprotokoll registriert. Wenn nicht MachineName festgelegt ist, wird die Quelle auf dem lokalen Computer registriert.

Hinweis

Zum Erstellen einer Ereignisquelle in Windows Vista und höher oder Windows Server 2003 müssen Sie über Administratorrechte verfügen.

Der Grund für diese Anforderung ist, dass alle Ereignisprotokolle, einschließlich der Sicherheit, durchsucht werden müssen, um festzustellen, ob die Ereignisquelle eindeutig ist. Ab Windows Vista verfügen Benutzer nicht über die Berechtigung zum Zugriff auf das Sicherheitsprotokoll. daher wird ein SecurityException ausgelöst.

Ab Windows Vista bestimmt die Benutzerkontensteuerung (User Account Control, UAC) die Berechtigungen eines Benutzers. Als Mitglied der integrierten Administratorgruppe sind Ihnen zwei Zugriffstoken für die Laufzeit zugewiesen: ein Standardbenutzertoken und ein Administratorzugriffstoken. Standardmäßig verwenden Sie die Standardbenutzerrolle. Um den Code auszuführen, der auf das Sicherheitsprotokoll zugreift, müssen Sie zuerst Ihre Berechtigungen vom Standardbenutzer auf den Administrator erhöhen. Dazu starten Sie eine Anwendung, indem Sie mit der rechten Maustaste auf das Anwendungssymbol klicken und angeben, dass Sie die Anwendung als Administrator ausführen möchten.

Verwenden Sie WriteEvent und WriteEntry , um Ereignisse in ein Ereignisprotokoll zu schreiben. Sie müssen eine Ereignisquelle angeben, um Ereignisse zu schreiben. Sie müssen die Ereignisquelle erstellen und konfigurieren, bevor Sie den ersten Eintrag mit der Quelle schreiben.

Create die neue Ereignisquelle während der Installation Ihrer Anwendung. Dadurch kann das Betriebssystem die Liste der registrierten Ereignisquellen und deren Konfiguration aktualisieren. Wenn das Betriebssystem seine Liste der Ereignisquellen nicht aktualisiert hat und Sie versuchen, ein Ereignis mit der neuen Quelle zu schreiben, schlägt der Schreibvorgang fehl. Sie können eine neue Quelle mit oder EventLogInstallermit der CreateEventSource -Methode konfigurieren. Sie müssen über Administratorrechte auf dem Computer verfügen, um eine neue Ereignisquelle zu erstellen.

Sie können eine Ereignisquelle für ein vorhandenes Ereignisprotokoll oder ein neues Ereignisprotokoll erstellen. Wenn Sie eine neue Quelle für ein neues Ereignisprotokoll erstellen, registriert das System die Quelle für dieses Protokoll, aber das Protokoll wird erst erstellt, wenn der erste Eintrag in das Protokoll geschrieben wurde.

Das Betriebssystem speichert Ereignisprotokolle als Dateien. Wenn Sie ein neues Ereignisprotokoll verwenden EventLogInstaller oder CreateEventSource erstellen, wird die zugeordnete Datei im Verzeichnis %SystemRoot%\System32\Config auf dem angegebenen Computer gespeichert. Der Dateiname wird festgelegt, indem die ersten 8 Zeichen der Eigenschaft mit der Log Dateinamenerweiterung ".evt" angefügt werden.

Jede Quelle kann jeweils nur in ein Ereignisprotokoll schreiben. Ihre Anwendung kann jedoch mehrere Quellen verwenden, um in mehrere Ereignisprotokolle zu schreiben. Beispielsweise erfordert Ihre Anwendung möglicherweise mehrere Quellen, die für unterschiedliche Ereignisprotokolle oder unterschiedliche Ressourcendateien konfiguriert sind.

Sie können die Ereignisquelle mit lokalisierten Ressourcendateien für Ihre Ereigniskategorie und Nachrichtenzeichenfolgen registrieren. Ihre Anwendung kann Ereignisprotokolleinträge mithilfe von Ressourcenbezeichnern schreiben, anstatt die tatsächliche Zeichenfolge anzugeben. Der Ereignisanzeige verwendet den Ressourcenbezeichner, um die entsprechende Zeichenfolge aus der lokalisierten Ressourcendatei basierend auf den aktuellen Spracheinstellungen zu suchen und anzuzeigen. Sie können eine separate Datei für Ereigniskategorien, Nachrichten und Parametereinfügungszeichenfolgen registrieren, oder Sie können dieselbe Ressourcendatei für alle drei Typen von Zeichenfolgen registrieren. Verwenden Sie die CategoryCountEigenschaften , CategoryResourceFile, MessageResourceFileund ParameterResourceFile , um die Quelle zum Schreiben lokalisierter Einträge in das Ereignisprotokoll zu konfigurieren. Wenn Ihre Anwendung Zeichenfolgenwerte direkt in das Ereignisprotokoll schreibt, müssen Sie diese Eigenschaften nicht festlegen.

Die Quelle muss entweder für das Schreiben lokalisierter Einträge oder für das Schreiben direkter Zeichenfolgen konfiguriert werden. Wenn Ihre Anwendung Einträge mit Ressourcenbezeichnern und Zeichenfolgenwerten schreibt, müssen Sie zwei separate Quellen registrieren. Konfigurieren Sie beispielsweise eine Quelle mit Ressourcendateien, und verwenden Sie diese Quelle 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.

Um die Konfigurationsdetails einer vorhandenen Quelle zu ändern, müssen Sie die Quelle löschen und dann mit der neuen Konfiguration erstellen. Wenn andere Anwendungen oder Komponenten die vorhandene Quelle verwenden, erstellen Sie eine neue Quelle mit der aktualisierten Konfiguration, anstatt die vorhandene Quelle zu löschen.

Hinweis

Wenn eine Quelle für ein Ereignisprotokoll konfiguriert ist und Sie sie für ein anderes Ereignisprotokoll neu konfigurieren, müssen Sie den Computer neu starten, damit die Änderungen wirksam werden.

Weitere Informationen

Gilt für:

CreateEventSource(String, String)

Quelle:
EventLog.cs
Quelle:
EventLog.cs
Quelle:
EventLog.cs

Richtet den angegebenen Quellennamen als gültige Ereignisquelle für das Schreiben von Einträgen in ein Protokoll auf dem lokalen Computer ein. Diese Methode kann auch ein neues benutzerdefiniertes Protokoll auf dem lokalen Computer erstellen.

public:
 static void CreateEventSource(System::String ^ source, System::String ^ logName);
public static void CreateEventSource (string source, string logName);
static member CreateEventSource : string * string -> unit
Public Shared Sub CreateEventSource (source As String, logName As String)

Parameter

source
String

Der Quellenname, unter dem die Anwendung auf dem lokalen Computer registriert ist.

logName
String

Der Name des Protokolls, in das die Einträge der Quelle geschrieben werden. Zu den möglichen Werten gehören das Anwendungs- bzw. Systemprotokoll oder ein benutzerdefiniertes Ereignisprotokoll.

Ausnahmen

source ist eine leere Zeichenfolge ("") oder null

- oder -

logName ist kein gültiger Ereignisprotokollname. Ereignisprotokollnamen müssen aus druckbaren Zeichen bestehen und dürfen die Zeichen "*", "?" oder "\" nicht enthalten.

- oder -

logName ist nicht gültig für Benutzerprotokollerstellung. Die Ereignisprotokollnamen AppEvent, SysEvent und SecEvent sind für die Verwendung durch das System reserviert.

- oder -

Der Protokollname stimmt mit einem vorhandenen Ereignisquellennamen überein.

- oder -

Der Quellenname führt dazu, dass der Registrierungsschlüsselpfad länger als 254 Zeichen ist.

- oder -

Die ersten acht Zeichen von logName stimmen mit den ersten acht Zeichen eines vorhandenen Ereignisprotokollnamens überein.

- oder -

Die Quelle kann nicht registriert werden, da diese bereits auf dem lokalen Computer vorhanden ist.

- oder -

Der Quellenname stimmt mit einem vorhandenen Ereignisprotokollnamen überein.

Der Registrierungsschlüssel für das Ereignisprotokoll konnte auf dem lokalen Computer nicht geöffnet werden.

Beispiele

Im folgenden Beispiel wird die Quelle MySource erstellt, falls sie noch nicht vorhanden ist, und schreibt einen Eintrag in das Ereignisprotokoll MyNewLog.

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   
   // Create the source, if it does not already exist.
   if (  !EventLog::SourceExists( "MySource" ) )
   {
      //An event log source should not be created and immediately used.
      //There is a latency time to enable the source, it should be created
      //prior to executing the application that uses the source.
      //Execute this sample a second time to use the new source.
      EventLog::CreateEventSource( "MySource", "MyNewLog" );
      Console::WriteLine( "CreatingEventSource" );
      // The source is created.  Exit the application to allow it to be registered.
      return 0;
   }

   
   // Create an EventLog instance and assign its source.
   EventLog^ myLog = gcnew EventLog;
   myLog->Source = "MySource";
   
   // Write an informational entry to the event log.    
   myLog->WriteEntry( "Writing to event log." );
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample{

    public static void Main(){

        // Create the source, if it does not already exist.
        if(!EventLog.SourceExists("MySource"))
        {
             //An event log source should not be created and immediately used.
             //There is a latency time to enable the source, it should be created
             //prior to executing the application that uses the source.
             //Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog");
            Console.WriteLine("CreatedEventSource");
            Console.WriteLine("Exiting, execute the application a second time to use the source.");
            // The source is created.  Exit the application to allow it to be registered.
            return;
        }

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.Source = "MySource";

        // Write an informational entry to the event log.
        myLog.WriteEntry("Writing to event log.");
    }
}
Option Explicit
Option Strict

Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        
        If Not EventLog.SourceExists("MySource") Then
            ' Create the source, if it does not already exist.
            ' An event log source should not be created and immediately used.
            ' There is a latency time to enable the source, it should be created
            ' prior to executing the application that uses the source.
            ' Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog")
            Console.WriteLine("CreatingEventSource")
            'The source is created.  Exit the application to allow it to be registered.
            Return
        End If
        
        ' Create an EventLog instance and assign its source.
        Dim myLog As New EventLog()
        myLog.Source = "MySource"
        
        ' Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.")
    End Sub
End Class

Hinweise

Verwenden Sie diese Überladung, um ein benutzerdefiniertes Protokoll zu erstellen oder um ein Source vorhandenes Protokoll auf dem lokalen Computer zu erstellen und zu registrieren.

Wenn logName es sich beim Aufrufen CreateEventSourceum eine leere Zeichenfolge ("") handelt, wird null das Protokoll standardmäßig auf das Anwendungsprotokoll festgelegt. Wenn das Protokoll auf dem lokalen Computer nicht vorhanden ist, erstellt das System ein benutzerdefiniertes Protokoll und registriert Ihre Anwendung als für Source dieses Protokoll.

Hinweis

Zum Erstellen einer Ereignisquelle in Windows Vista und höher oder Windows Server 2003 müssen Sie über Administratorrechte verfügen.

Der Grund für diese Anforderung ist, dass alle Ereignisprotokolle, einschließlich der Sicherheit, durchsucht werden müssen, um festzustellen, ob die Ereignisquelle eindeutig ist. Ab Windows Vista verfügen Benutzer nicht über die Berechtigung zum Zugriff auf das Sicherheitsprotokoll. daher wird ein SecurityException ausgelöst.

Unter Windows Vista (und höher) werden die Berechtigungen eines Benutzers von der Benutzerkontensteuerung (User Account Control, UAC) bestimmt. Als Mitglied der integrierten Administratorgruppe sind Ihnen zwei Zugriffstoken für die Laufzeit zugewiesen: ein Standardbenutzertoken und ein Administratorzugriffstoken. Standardmäßig verwenden Sie die Standardbenutzerrolle. Um den Code auszuführen, der auf das Sicherheitsprotokoll zugreift, müssen Sie zuerst Ihre Berechtigungen vom Standardbenutzer auf den Administrator erhöhen. Dazu starten Sie eine Anwendung, indem Sie mit der rechten Maustaste auf das Anwendungssymbol klicken und angeben, dass Sie die Anwendung als Administrator ausführen möchten.

Sie müssen nur eine Ereignisquelle erstellen, wenn Sie in das Ereignisprotokoll schreiben. Bevor Sie einen Eintrag in ein Ereignisprotokoll schreiben, müssen Sie die Ereignisquelle beim Ereignisprotokoll als gültige Ereignisquelle registrieren. Wenn Sie einen Protokolleintrag schreiben, verwendet das System den Source , um das entsprechende Protokoll zu finden, in dem Der Eintrag platziert werden soll. Wenn Sie das Ereignisprotokoll lesen, können Sie entweder das Source- oder ein Log - und MachineNameangeben.

Hinweis

Sie müssen nicht angeben MachineName , wenn Sie eine Verbindung mit einem Protokoll auf dem lokalen Computer herstellen. Wenn Sie beim Lesen aus einem Protokoll nicht angeben MachineName , wird der lokale Computer (".") angenommen.

Verwenden Sie WriteEvent und WriteEntry , um Ereignisse in ein Ereignisprotokoll zu schreiben. Sie müssen eine Ereignisquelle angeben, um Ereignisse zu schreiben. Sie müssen die Ereignisquelle erstellen und konfigurieren, bevor Sie den ersten Eintrag mit der Quelle schreiben.

Create die neue Ereignisquelle während der Installation Ihrer Anwendung. Dadurch kann das Betriebssystem die Liste der registrierten Ereignisquellen und deren Konfiguration aktualisieren. Wenn das Betriebssystem seine Liste der Ereignisquellen nicht aktualisiert hat und Sie versuchen, ein Ereignis mit der neuen Quelle zu schreiben, schlägt der Schreibvorgang fehl. Sie können eine neue Quelle mit oder EventLogInstallermit der CreateEventSource -Methode konfigurieren. Sie müssen über Administratorrechte auf dem Computer verfügen, um eine neue Ereignisquelle zu erstellen.

Sie können eine Ereignisquelle für ein vorhandenes Ereignisprotokoll oder ein neues Ereignisprotokoll erstellen. Wenn Sie eine neue Quelle für ein neues Ereignisprotokoll erstellen, registriert das System die Quelle für dieses Protokoll, aber das Protokoll wird erst erstellt, wenn der erste Eintrag in das Protokoll geschrieben wurde.

Das Betriebssystem speichert Ereignisprotokolle als Dateien. Wenn Sie ein neues Ereignisprotokoll verwenden EventLogInstaller oder CreateEventSource erstellen, wird die zugeordnete Datei im Verzeichnis %SystemRoot%\System32\Config auf dem angegebenen Computer gespeichert. Der Dateiname wird festgelegt, indem die ersten 8 Zeichen der Eigenschaft mit der Log Dateinamenerweiterung ".evt" angefügt werden.

Die Quelle muss auf dem lokalen Computer eindeutig sein. ein neuer Quellname kann nicht mit einem vorhandenen Quellnamen oder einem vorhandenen Ereignisprotokollnamen übereinstimmen. Jede Quelle kann jeweils nur in ein Ereignisprotokoll schreiben. Ihre Anwendung kann jedoch mehrere Quellen verwenden, um in mehrere Ereignisprotokolle zu schreiben. Beispielsweise erfordert Ihre Anwendung möglicherweise mehrere Quellen, die für unterschiedliche Ereignisprotokolle oder unterschiedliche Ressourcendateien konfiguriert sind.

Die Quelle muss entweder für das Schreiben lokalisierter Einträge oder für das Schreiben direkter Zeichenfolgen konfiguriert werden. Wenn Ihre Anwendung Einträge mit Ressourcenbezeichnern und Zeichenfolgenwerten schreibt, müssen Sie zwei separate Quellen registrieren. Konfigurieren Sie beispielsweise eine Quelle mit Ressourcendateien, und verwenden Sie diese Quelle 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.

Um die Konfigurationsdetails einer vorhandenen Quelle zu ändern, müssen Sie die Quelle löschen und dann mit der neuen Konfiguration erstellen. Wenn andere Anwendungen oder Komponenten die vorhandene Quelle verwenden, erstellen Sie eine neue Quelle mit der aktualisierten Konfiguration, anstatt die vorhandene Quelle zu löschen.

Hinweis

Wenn eine Quelle bereits einem Protokoll zugeordnet wurde und Sie sie einem neuen Protokoll zuordnen, müssen Sie den Computer neu starten, damit die Änderungen wirksam werden.

Weitere Informationen

Gilt für:

CreateEventSource(String, String, String)

Quelle:
EventLog.cs
Quelle:
EventLog.cs
Quelle:
EventLog.cs

Achtung

This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. http://go.microsoft.com/fwlink/?linkid=14202

Achtung

This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. https://go.microsoft.com/fwlink/?linkid=14202

Achtung

EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.

Richtet den angegebenen Quellennamen als gültige Ereignisquelle für das Schreiben von Einträgen in ein Protokoll auf dem angegebenen Computer ein. Mit dieser Methode kann auch ein neues benutzerdefiniertes Protokoll auf dem angegebenen Computer erstellt werden.

public:
 static void CreateEventSource(System::String ^ source, System::String ^ logName, System::String ^ machineName);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")]
public static void CreateEventSource (string source, string logName, string machineName);
public static void CreateEventSource (string source, string logName, string machineName);
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")>]
static member CreateEventSource : string * string * string -> unit
static member CreateEventSource : string * string * string -> unit
Public Shared Sub CreateEventSource (source As String, logName As String, machineName As String)

Parameter

source
String

Die Quelle, unter der die Anwendung auf dem angegebenen Computer registriert ist.

logName
String

Der Name des Protokolls, in das die Einträge der Quelle geschrieben werden. Zu den möglichen Werten gehören das Anwendungs- bzw. Systemprotokoll oder ein benutzerdefiniertes Ereignisprotokoll. Wenn Sie keinen Wert angeben, wird standardmäßig für logName das Anwendungsprotokoll verwendet.

machineName
String

Der Name des Computers, auf dem diese Ereignisquelle registriert wird, oder "." für den lokalen Computer.

Attribute

Ausnahmen

Der machineName ist kein gültiger Computername.

- oder -

source ist eine leere Zeichenfolge ("") oder null

- oder -

logName ist kein gültiger Ereignisprotokollname. Ereignisprotokollnamen müssen aus druckbaren Zeichen bestehen und dürfen die Zeichen "*", "?" oder "\" nicht enthalten.

- oder -

logName ist nicht gültig für Benutzerprotokollerstellung. Die Ereignisprotokollnamen AppEvent, SysEvent und SecEvent sind für die Verwendung durch das System reserviert.

- oder -

Der Protokollname stimmt mit einem vorhandenen Ereignisquellennamen überein.

- oder -

Der Quellenname führt dazu, dass der Registrierungsschlüsselpfad länger als 254 Zeichen ist.

- oder -

Die ersten acht Zeichen von logName stimmen mit den ersten acht Zeichen eines vorhandenen Ereignisprotokollnamens auf dem angegebenen Computer überein.

- oder -

Die Quelle kann nicht registriert werden, da diese bereits auf dem angegebenen Computer vorhanden ist.

- oder -

Der Quellenname stimmt mit einem vorhandenen Ereignisquellennamen überein.

Der Registrierungsschlüssel für das Ereignisprotokoll konnte auf dem angegebenen Computer nicht geöffnet werden.

Beispiele

Im folgenden Beispiel wird die Quelle MySource auf dem Computer MyServererstellt und ein Eintrag in das Ereignisprotokoll MyNewLoggeschrieben.

#using <System.dll>

using namespace System;
using namespace System::Diagnostics;
using namespace System::Threading;
int main()
{
   
   // Create the source, if it does not already exist.
   if (  !EventLog::SourceExists( "MySource", "MyServer" ) )
   {
      EventLog::CreateEventSource( "MySource", "MyNewLog", "MyServer" );
      Console::WriteLine( "CreatingEventSource" );
   }

   
   // Create an EventLog instance and assign its source.
   EventLog^ myLog = gcnew EventLog;
   myLog->Source = "MySource";
   
   // Write an informational entry to the event log.    
   myLog->WriteEntry( "Writing to event log." );
   Console::WriteLine( "Message written to event log." );
}
using System;
using System.Diagnostics;
using System.Threading;

class MySample{

    public static void Main(){

        // Create the source, if it does not already exist.
        if(!EventLog.SourceExists("MySource", "MyServer"))
        {
            // An event log source should not be created and immediately used.
            // There is a latency time to enable the source, it should be created
            // prior to executing the application that uses the source.
            // Execute this sample a second time to use the new source.
            EventLog.CreateEventSource("MySource", "MyNewLog", "MyServer");
            Console.WriteLine("CreatingEventSource");
            Console.WriteLine("Exiting, execute the application a second time to use the source.");
            // The source is created.  Exit the application to allow it to be registered.
            return;
        }

        // Create an EventLog instance and assign its source.
        EventLog myLog = new EventLog();
        myLog.Source = "MySource";

        // Write an informational entry to the event log.
        myLog.WriteEntry("Writing to event log.");

        Console.WriteLine("Message written to event log.");
    }
}
Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        ' Create the source, if it does not already exist.
        If Not EventLog.SourceExists("MySource", "MyServer") Then
            EventLog.CreateEventSource("MySource", "MyNewLog", "MyServer")
            Console.WriteLine("CreatingEventSource")
        End If
        
        ' Create an EventLog instance and assign its source.
        Dim myLog As New EventLog()
        myLog.Source = "MySource"
        
        ' Write an informational entry to the event log.    
        myLog.WriteEntry("Writing to event log.")
        
        Console.WriteLine("Message written to event log.")
    End Sub
End Class

Hinweise

Verwenden Sie diese Überladung, um ein benutzerdefiniertes Protokoll zu erstellen oder um ein Source vorhandenes Protokoll auf dem angegebenen Computer zu erstellen und zu registrieren.

Wenn logName es sich beim Aufrufen CreateEventSourceum eine leere Zeichenfolge ("") handelt, wird null das Protokoll standardmäßig auf das Anwendungsprotokoll festgelegt. Wenn das Protokoll auf dem angegebenen Computer nicht vorhanden ist, erstellt das System ein benutzerdefiniertes Protokoll und registriert Ihre Anwendung als für Source dieses Protokoll.

Sie müssen nur eine Ereignisquelle erstellen, wenn Sie in das Ereignisprotokoll schreiben. Bevor Sie einen Eintrag in ein Ereignisprotokoll schreiben, müssen Sie die Ereignisquelle beim Ereignisprotokoll als gültige Ereignisquelle registrieren. Wenn Sie einen Protokolleintrag schreiben, verwendet das System den Source , um das entsprechende Protokoll zu finden, in dem Der Eintrag platziert werden soll. Wenn Sie das Ereignisprotokoll lesen, können Sie entweder das Source- oder ein Log - und MachineNameangeben.

Hinweis

Zum Erstellen einer Ereignisquelle in Windows Vista und höher oder Windows Server 2003 müssen Sie über Administratorrechte verfügen.

Der Grund für diese Anforderung ist, dass alle Ereignisprotokolle, einschließlich der Sicherheit, durchsucht werden müssen, um festzustellen, ob die Ereignisquelle eindeutig ist. In Windows Vista und höher verfügen Benutzer nicht über die Berechtigung zum Zugriff auf das Sicherheitsprotokoll. daher wird ein SecurityException ausgelöst.

Unter Windows Vista (und höher) werden die Berechtigungen eines Benutzers von der Benutzerkontensteuerung (User Account Control, UAC) bestimmt. Als Mitglied der integrierten Administratorgruppe sind Ihnen zwei Zugriffstoken für die Laufzeit zugewiesen: ein Standardbenutzertoken und ein Administratorzugriffstoken. Standardmäßig verwenden Sie die Standardbenutzerrolle. Um den Code auszuführen, der auf das Sicherheitsprotokoll zugreift, müssen Sie zuerst Ihre Berechtigungen vom Standardbenutzer auf den Administrator erhöhen. Dazu starten Sie eine Anwendung, indem Sie mit der rechten Maustaste auf das Anwendungssymbol klicken und angeben, dass Sie die Anwendung als Administrator ausführen möchten.

Verwenden Sie WriteEvent und WriteEntry , um Ereignisse in ein Ereignisprotokoll zu schreiben. Sie müssen eine Ereignisquelle angeben, um Ereignisse zu schreiben. Sie müssen die Ereignisquelle erstellen und konfigurieren, bevor Sie den ersten Eintrag mit der Quelle schreiben.

Create die neue Ereignisquelle während der Installation Ihrer Anwendung. Dadurch kann das Betriebssystem die Liste der registrierten Ereignisquellen und deren Konfiguration aktualisieren. Wenn das Betriebssystem seine Liste der Ereignisquellen nicht aktualisiert hat und Sie versuchen, ein Ereignis mit der neuen Quelle zu schreiben, schlägt der Schreibvorgang fehl. Sie können eine neue Quelle mit oder EventLogInstallermit der CreateEventSource -Methode konfigurieren. Sie müssen über Administratorrechte auf dem Computer verfügen, um eine neue Ereignisquelle zu erstellen.

Sie können eine Ereignisquelle für ein vorhandenes Ereignisprotokoll oder ein neues Ereignisprotokoll erstellen. Wenn Sie eine neue Quelle für ein neues Ereignisprotokoll erstellen, registriert das System die Quelle für dieses Protokoll, aber das Protokoll wird erst erstellt, wenn der erste Eintrag in das Protokoll geschrieben wurde.

Das Betriebssystem speichert Ereignisprotokolle als Dateien. Wenn Sie ein neues Ereignisprotokoll verwenden EventLogInstaller oder CreateEventSource erstellen, wird die zugeordnete Datei im Verzeichnis %SystemRoot%\System32\Config auf dem angegebenen Computer gespeichert. Der Dateiname wird festgelegt, indem die ersten 8 Zeichen der Eigenschaft mit der Log Dateinamenerweiterung ".evt" angefügt werden.

Die Quelle muss auf dem lokalen Computer eindeutig sein. ein neuer Quellname kann nicht mit einem vorhandenen Quellnamen oder einem vorhandenen Ereignisprotokollnamen übereinstimmen. Jede Quelle kann jeweils nur in ein Ereignisprotokoll schreiben. Ihre Anwendung kann jedoch mehrere Quellen verwenden, um in mehrere Ereignisprotokolle zu schreiben. Beispielsweise erfordert Ihre Anwendung möglicherweise mehrere Quellen, die für unterschiedliche Ereignisprotokolle oder unterschiedliche Ressourcendateien konfiguriert sind.

Die Quelle muss entweder für das Schreiben lokalisierter Einträge oder für das Schreiben direkter Zeichenfolgen konfiguriert werden. Wenn Ihre Anwendung Einträge mit Ressourcenbezeichnern und Zeichenfolgenwerten schreibt, müssen Sie zwei separate Quellen registrieren. Konfigurieren Sie beispielsweise eine Quelle mit Ressourcendateien, und verwenden Sie diese Quelle 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.

Um die Konfigurationsdetails einer vorhandenen Quelle zu ändern, müssen Sie die Quelle löschen und dann mit der neuen Konfiguration erstellen. Wenn andere Anwendungen oder Komponenten die vorhandene Quelle verwenden, erstellen Sie eine neue Quelle mit der aktualisierten Konfiguration, anstatt die vorhandene Quelle zu löschen.

Hinweis

Wenn eine Quelle bereits einem Protokoll zugeordnet wurde und Sie sie einem neuen Protokoll zuordnen, müssen Sie den Computer neu starten, damit die Änderungen wirksam werden.

Weitere Informationen

Gilt für: