Язык

EventLog.SourceExists Метод

Определение

Выполняет поиск в реестре компьютера для заданного источника событий.

Перегрузки

Имя Описание
SourceExists(String)

Определяет, зарегистрирован ли источник событий на локальном компьютере.

SourceExists(String, String)

Определяет, зарегистрирован ли источник событий на указанном компьютере.

SourceExists(String)

Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs

Определяет, зарегистрирован ли источник событий на локальном компьютере.

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

Параметры

source
String

Имя источника события.

Возвращаемое значение

true Значение , если источник событий зарегистрирован на локальном компьютере; falseв противном случае .

Исключения

source не найден, но некоторые или все журналы событий не удалось найти.

Примеры

В следующем примере создается источник MySource , если он еще не существует, и записывает запись в журнал 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

Комментарии

Используйте этот метод, чтобы определить, существует ли источник событий на локальном компьютере. Если вы хотите определить, существует ли журнал на локальном компьютере, используйте Exists.

Так как этот метод обращается к реестру, у вас должны быть соответствующие разрешения реестра на локальном компьютере; SecurityException в противном случае создается исключение.

Note

Чтобы найти источник событий в Windows Vista и более поздних версиях или Windows Server 2003, необходимо иметь права администратора.

Причина этого требования заключается в том, что все журналы событий, включая безопасность, необходимо выполнить поиск, чтобы определить, является ли источник события уникальным. Начиная с Windows Vista, пользователи не имеют разрешения на доступ к журналу безопасности; SecurityException поэтому создается исключение.

Начиная с Windows Vista контроль учетных записей (UAC) определяет привилегии пользователя. Если вы являетесь членом встроенной группы "Администраторы", вы назначаете два маркера доступа во время выполнения: маркер доступа стандартного пользователя и маркер доступа администратора. По умолчанию вы находитесь в стандартной роли пользователя. Чтобы выполнить код, который обращается к счетчикам производительности, необходимо сначала повысить привилегии от стандартного пользователя к администратору. Это можно сделать при запуске приложения, щелкнув правой кнопкой мыши значок приложения и указав, что вы хотите запустить от имени администратора.

Note

Служба, выполняемая в LocalSystem учетной записи, не имеет привилегий, необходимых для выполнения этого метода. Решение заключается в том, чтобы проверить, существует ли источник события в и ServiceInstallerесли он не существует, чтобы создать источник в установщике.

Так как нельзя предоставить новый источник имени существующего источника на том же компьютере, используйте этот метод перед попыткой вызова CreateEventSource , чтобы убедиться, что источник с именем, указанным source на локальном компьютере, еще не существует. Параметр source не учитывает регистр.

См. также раздел

Применяется к

SourceExists(String, String)

Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs
Исходный код:
EventLog.cs

Определяет, зарегистрирован ли источник событий на указанном компьютере.

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

Параметры

source
String

Имя источника события.

machineName
String

Имя компьютера, на котором будет выглядеть или "." для локального компьютера.

Возвращаемое значение

true Значение , если источник событий зарегистрирован на данном компьютере; falseв противном случае .

Исключения

machineName — недопустимое имя компьютера.

source не найден, но некоторые или все журналы событий не удалось найти.

Примеры

В следующем примере создается источник MySource на компьютере MyServerи записывается запись в журнал 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", "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

Комментарии

Этот метод позволяет определить, существует ли источник событий на компьютере, указанном параметром machineName . Если вы хотите определить, существует ли журнал на указанном компьютере, используйте Exists.

Так как этот метод обращается к реестру, у вас должны быть соответствующие разрешения реестра на данном сервере; SecurityException в противном случае создается исключение.

Note

Чтобы найти источник событий в Windows Vista и более поздних версиях или Windows Server 2003, необходимо иметь права администратора.

Причина этого требования заключается в том, что все журналы событий, включая безопасность, необходимо выполнить поиск, чтобы определить, является ли источник события уникальным. Начиная с Windows Vista, пользователи не имеют разрешения на доступ к журналу безопасности; SecurityException поэтому создается исключение.

Начиная с Windows Vista контроль учетных записей (UAC) определяет привилегии пользователя. Если вы являетесь членом встроенной группы "Администраторы", вы назначаете два маркера доступа во время выполнения: маркер доступа стандартного пользователя и маркер доступа администратора. По умолчанию вы находитесь в стандартной роли пользователя. Чтобы выполнить код, который обращается к счетчикам производительности, необходимо сначала повысить привилегии от стандартного пользователя к администратору. Это можно сделать при запуске приложения, щелкнув правой кнопкой мыши значок приложения и указав, что вы хотите запустить от имени администратора.

Note

Служба, выполняемая в LocalSystem учетной записи, не имеет привилегий, необходимых для выполнения этого метода. Решение заключается в том, чтобы проверить, существует ли источник события в и ServiceInstallerесли он не существует, чтобы создать источник в установщике.

Так как вы не можете предоставить новый источник имени существующего источника на том же компьютере, используйте этот метод перед попыткой вызова CreateEventSource , чтобы убедиться, что источник с именем, указанным source на компьютере, еще не существует. source Параметры machineName не учитывает регистр.

SourceExists static— это метод, поэтому его можно вызвать в самом классе. Не обязательно создать экземпляр EventLog вызова SourceExists.

См. также раздел

Применяется к