EventLog.SourceExists Methode

Definition

Durchsucht die Registrierung eines Computers nach einer bestimmten Ereignisquelle.

Überlädt

Name Beschreibung
SourceExists(String)

Bestimmt, ob eine Ereignisquelle auf dem lokalen Computer registriert ist.

SourceExists(String, String)

Bestimmt, ob eine Ereignisquelle auf einem angegebenen Computer registriert ist.

SourceExists(String)

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

Bestimmt, ob eine Ereignisquelle auf dem lokalen Computer registriert ist.

public:
 static bool SourceExists(System::String ^ source);
public static bool SourceExists(string? source);
public static bool SourceExists(string source);
static member SourceExists : string -> bool
Public Shared Function SourceExists (source As String) As Boolean

Parameter

source
String

Der Name der Ereignisquelle.

Gibt zurück

truewenn die Ereignisquelle auf dem lokalen Computer registriert ist; andernfalls . false

Ausnahmen

source wurde nicht gefunden, aber einige oder alle Ereignisprotokolle konnten nicht durchsucht werden.

Beispiele

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

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("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.");
    }
}
Option Explicit
Option Strict
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") Then
            EventLog.CreateEventSource("MySource", "MyNewLog")
            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 Methode, um zu ermitteln, ob eine Ereignisquelle auf dem lokalen Computer vorhanden ist. Wenn Sie ermitteln möchten, ob ein Protokoll auf dem lokalen Computer vorhanden ist, verwenden Sie Exists.

Da diese Methode auf die Registrierung zugreift, müssen Sie über die entsprechenden Registrierungsberechtigungen auf dem lokalen Computer verfügen. andernfalls wird ein SecurityException Fehler ausgelöst.

Note

Um in Windows Vista und höher oder Windows Server 2003 nach einer Ereignisquelle zu suchen, müssen Sie über Administratorrechte verfügen.

Der Grund für diese Anforderung ist, dass alle Ereignisprotokolle, einschließlich Sicherheit, durchsucht werden müssen, um festzustellen, ob die Ereignisquelle eindeutig ist. Seit Windows Vista verfügen Benutzer nicht über die Berechtigung für den Zugriff auf das Sicherheitsprotokoll. Aus diesem Grund wird ein SecurityException geworfen.

Ab Windows Vista bestimmt die Benutzerkontensteuerung (User Account Control, UAC) die Berechtigungen eines Benutzers. Wenn Sie Mitglied der Gruppe "Integrierte Administratoren" sind, werden Ihnen zwei Laufzeitzugriffstoken zugewiesen: ein Standardbenutzerzugriffstoken und ein Administratorzugriffstoken. Standardmäßig befinden Sie sich in der Standardbenutzerrolle. Um den Code auszuführen, der auf Leistungsindikatoren zugreift, müssen Sie zuerst Ihre Berechtigungen vom Standardbenutzer zum Administrator erhöhen. Sie können dies tun, wenn Sie eine Anwendung starten, indem Sie mit der rechten Maustaste auf das Anwendungssymbol klicken und angeben, dass Sie als Administrator ausführen möchten.

Note

Ein Dienst, der unter dem LocalSystem Konto ausgeführt wird, verfügt nicht über die zum Ausführen dieser Methode erforderlichen Berechtigungen. Die Lösung besteht darin, zu überprüfen, ob die Ereignisquelle im ServiceInstallerInstallationsprogramm vorhanden ist und ob sie nicht vorhanden ist, um die Quelle im Installationsprogramm zu erstellen.

Da Sie einer neuen Quelle nicht den Namen einer vorhandenen Quelle auf demselben Computer zuweisen können, verwenden Sie diese Methode, bevor Sie versuchen, aufzurufen CreateEventSource , dass eine Quelle mit dem angegebenen source Namen nicht bereits auf dem lokalen Computer vorhanden ist. Bei dem source Parameter wird die Groß-/Kleinschreibung nicht beachtet.

Weitere Informationen

Gilt für:

SourceExists(String, String)

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

Bestimmt, ob eine Ereignisquelle auf einem angegebenen Computer registriert ist.

public:
 static bool SourceExists(System::String ^ source, System::String ^ machineName);
public static bool SourceExists(string? source, string machineName);
public static bool SourceExists(string source, string machineName);
static member SourceExists : string * string -> bool
Public Shared Function SourceExists (source As String, machineName As String) As Boolean

Parameter

source
String

Der Name der Ereignisquelle.

machineName
String

Der Name des Computers, auf dem gesucht werden soll, oder "." für den lokalen Computer.

Gibt zurück

truewenn die Ereignisquelle auf dem angegebenen Computer registriert ist; andernfalls . false

Ausnahmen

machineName ist ein ungültiger Computername.

source wurde nicht gefunden, aber einige oder alle Ereignisprotokolle konnten nicht durchsucht werden.

Beispiele

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

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 Methode, um zu bestimmen, ob eine Ereignisquelle auf dem computer vorhanden ist, der durch den machineName Parameter angegeben ist. Wenn Sie ermitteln möchten, ob ein Protokoll auf dem angegebenen Computer vorhanden ist, verwenden Sie Exists.

Da diese Methode auf die Registrierung zugreift, müssen Sie über die entsprechenden Registrierungsberechtigungen auf dem angegebenen Server verfügen. andernfalls wird ein SecurityException Fehler ausgelöst.

Note

Um in Windows Vista und höher oder Windows Server 2003 nach einer Ereignisquelle zu suchen, müssen Sie über Administratorrechte verfügen.

Der Grund für diese Anforderung ist, dass alle Ereignisprotokolle, einschließlich Sicherheit, durchsucht werden müssen, um festzustellen, ob die Ereignisquelle eindeutig ist. Seit Windows Vista verfügen Benutzer nicht über die Berechtigung für den Zugriff auf das Sicherheitsprotokoll. Aus diesem Grund wird ein SecurityException geworfen.

Ab Windows Vista bestimmt die Benutzerkontensteuerung (User Account Control, UAC) die Berechtigungen eines Benutzers. Wenn Sie Mitglied der Gruppe "Integrierte Administratoren" sind, werden Ihnen zwei Laufzeitzugriffstoken zugewiesen: ein Standardbenutzerzugriffstoken und ein Administratorzugriffstoken. Standardmäßig befinden Sie sich in der Standardbenutzerrolle. Um den Code auszuführen, der auf Leistungsindikatoren zugreift, müssen Sie zuerst Ihre Berechtigungen vom Standardbenutzer zum Administrator erhöhen. Sie können dies tun, wenn Sie eine Anwendung starten, indem Sie mit der rechten Maustaste auf das Anwendungssymbol klicken und angeben, dass Sie als Administrator ausführen möchten.

Note

Ein Dienst, der unter dem LocalSystem Konto ausgeführt wird, verfügt nicht über die zum Ausführen dieser Methode erforderlichen Berechtigungen. Die Lösung besteht darin, zu überprüfen, ob die Ereignisquelle im ServiceInstallerInstallationsprogramm vorhanden ist und ob sie nicht vorhanden ist, um die Quelle im Installationsprogramm zu erstellen.

Da Sie einer neuen Quelle nicht den Namen einer vorhandenen Quelle auf demselben Computer zuweisen können, verwenden Sie diese Methode, bevor Sie versuchen, aufzurufen CreateEventSource , um sicherzustellen, dass eine Quelle mit dem angegebenen source Namen noch nicht auf dem Computer vorhanden ist. Bei den source Parametern wird die Groß-/ machineName Kleinschreibung nicht beachtet.

SourceExists ist eine static Methode, sodass sie für die Klasse selbst aufgerufen werden kann. Es ist nicht erforderlich, eine Instanz des EventLog Aufrufens SourceExistszu erstellen.

Weitere Informationen

Gilt für: