EventLog.SourceExists 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.
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.