EventLog.CreateEventSource Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 messageFile
fest.
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 EingabesourceData
Source- 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 MyServer
erstellt und ein Eintrag in das Ereignisprotokoll MyNewLog
geschrieben.
#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:
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für