EventLog.SourceExists Methode

Definition

Durchsucht die Registrierung eines Computers nach einer bestimmten Ereignisquelle.

Überlädt

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

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

public:
 static bool SourceExists(System::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

true, wenn 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, sofern 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" ) )
   {
      EventLog::CreateEventSource( "MySource", "MyNewLog" );
      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"))
        {
            // 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 bestimmen, ob auf dem lokalen Computer eine Ereignisquelle vorhanden ist. Wenn Sie ermitteln möchten, ob auf dem lokalen Computer ein Protokoll 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 ausgelöst.

Hinweis

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 der Sicherheit, durchsucht werden müssen, um festzustellen, ob die Ereignisquelle eindeutig ist. Ab Windows Vista sind Benutzer nicht mehr berechtigt, auf das Sicherheitsprotokoll zuzugreifen. daher wird ein SecurityException ausgelöst.

Ab Windows Vista bestimmt die Benutzerkontensteuerung (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 Leistungsindikatoren zugreift, müssen Sie zuerst Ihre Berechtigungen vom Standardbenutzer zum 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.

Hinweis

Ein Dienst, der unter dem LocalSystem Konto ausgeführt wird, verfügt nicht über die berechtigungen, die zum Ausführen dieser Methode erforderlich sind. Die Lösung besteht darin, zu überprüfen, ob die Ereignisquelle im ServiceInstallervorhanden ist, und wenn 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 geben können, verwenden Sie diese Methode, bevor Sie versuchen, aufzurufen CreateEventSource , um sicherzustellen, dass eine Quelle mit dem durch angegebenen source Namen nicht bereits auf dem lokalen Computer vorhanden ist. Beim 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

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);
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

true, wenn 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.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 Methode, um zu bestimmen, ob auf dem durch den machineName -Parameter angegebenen Computer eine Ereignisquelle vorhanden ist. Wenn Sie ermitteln möchten, ob auf dem angegebenen Computer ein Protokoll 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 ausgelöst.

Hinweis

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 der Sicherheit, durchsucht werden müssen, um festzustellen, ob die Ereignisquelle eindeutig ist. Ab Windows Vista sind Benutzer nicht mehr berechtigt, auf das Sicherheitsprotokoll zuzugreifen. daher wird ein SecurityException ausgelöst.

Ab Windows Vista bestimmt die Benutzerkontensteuerung (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 Leistungsindikatoren zugreift, müssen Sie zuerst Ihre Berechtigungen vom Standardbenutzer zum 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.

Hinweis

Ein Dienst, der unter dem LocalSystem Konto ausgeführt wird, verfügt nicht über die berechtigungen, die zum Ausführen dieser Methode erforderlich sind. Die Lösung besteht darin, zu überprüfen, ob die Ereignisquelle im ServiceInstallervorhanden ist, und wenn 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 geben können, verwenden Sie diese Methode, bevor Sie versuchen, aufzurufen CreateEventSource , um sicherzustellen, dass eine Quelle mit dem von angegebenen source Namen nicht bereits auf dem Computer vorhanden ist. Bei den source Parametern und machineName wird die Groß-/Kleinschreibung nicht beachtet.

SourceExists ist eine static Methode, sodass sie für die Klasse selbst aufgerufen werden kann. Es ist nicht erforderlich, eine instance von EventLog zu erstellen, um aufzurufenSourceExists.

Weitere Informationen

Gilt für: