EventLog.SourceExists Método

Definição

Pesquisa o registro de um computador em busca de uma determinada fonte de evento.

Sobrecargas

Nome Description
SourceExists(String)

Determina se uma fonte de evento está registrada no computador local.

SourceExists(String, String)

Determina se uma fonte de evento está registrada em um computador especificado.

SourceExists(String)

Determina se uma fonte de evento está registrada no computador local.

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

Parâmetros

source
String

O nome da origem do evento.

Retornos

true se a origem do evento estiver registrada no computador local; caso contrário, false.

Exceções

source não foi encontrado, mas alguns ou todos os logs de eventos não puderam ser pesquisados.

Exemplos

O exemplo a seguir cria a origem MySource se ela ainda não existir e grava uma entrada no log de eventos 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

Comentários

Use esse método para determinar se existe uma fonte de evento no computador local. Se você quiser determinar se existe um log no computador local, use Exists.

Como esse método acessa o registro, você deve ter as permissões de registro apropriadas no computador local; caso contrário, um SecurityException será lançado.

Note

Para procurar uma fonte de evento em Windows Vista e posterior ou Windows Server 2003, você deve ter privilégios administrativos.

O motivo desse requisito é que todos os logs de eventos, incluindo a segurança, devem ser pesquisados para determinar se a origem do evento é exclusiva. A partir do Windows Vista, os usuários não têm permissão para acessar o log de segurança; portanto, um SecurityException é lançado.

A partir do Windows Vista, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se você for membro do grupo Administradores Internos, será atribuído dois tokens de acesso em tempo de execução: um token de acesso de usuário padrão e um token de acesso de administrador. Por padrão, você está na função de usuário padrão. Para executar o código que acessa contadores de desempenho, primeiro você deve elevar seus privilégios de usuário padrão para administrador. Você pode fazer isso ao iniciar um aplicativo clicando com o botão direito do mouse no ícone do aplicativo e indicando que deseja executar como administrador.

Note

Um serviço que está sendo executado na LocalSystem conta não tem os privilégios necessários para executar esse método. A solução é verificar se a origem do evento existe no ServiceInstaller, e se ele não existe, para criar a origem no instalador.

Como você não pode fornecer a uma nova fonte o nome de uma origem existente no mesmo computador, use esse método antes de tentar chamar CreateEventSource para garantir que uma fonte com o nome especificado pelo source computador local ainda não exista. O source parâmetro não diferencia maiúsculas de minúsculas.

Confira também

Aplica-se a

SourceExists(String, String)

Determina se uma fonte de evento está registrada em um computador especificado.

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

Parâmetros

source
String

O nome da origem do evento.

machineName
String

O nome do computador no qual procurar ou "." para o computador local.

Retornos

true se a origem do evento estiver registrada no computador especificado; caso contrário, false.

Exceções

machineName é um nome de computador inválido.

source não foi encontrado, mas alguns ou todos os logs de eventos não puderam ser pesquisados.

Exemplos

O exemplo a seguir cria a origem MySource no computador MyServere grava uma entrada no log de MyNewLogeventos.

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

Comentários

Use esse método para determinar se existe uma fonte de evento no computador especificado pelo machineName parâmetro. Se você quiser determinar se existe um log no computador especificado, use Exists.

Como esse método acessa o registro, você deve ter as permissões de registro apropriadas no servidor determinado; caso contrário, um SecurityException será lançado.

Note

Para procurar uma fonte de evento em Windows Vista e posterior ou Windows Server 2003, você deve ter privilégios administrativos.

O motivo desse requisito é que todos os logs de eventos, incluindo a segurança, devem ser pesquisados para determinar se a origem do evento é exclusiva. A partir do Windows Vista, os usuários não têm permissão para acessar o log de segurança; portanto, um SecurityException é lançado.

A partir do Windows Vista, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se você for membro do grupo Administradores Internos, será atribuído dois tokens de acesso em tempo de execução: um token de acesso de usuário padrão e um token de acesso de administrador. Por padrão, você está na função de usuário padrão. Para executar o código que acessa contadores de desempenho, primeiro você deve elevar seus privilégios de usuário padrão para administrador. Você pode fazer isso ao iniciar um aplicativo clicando com o botão direito do mouse no ícone do aplicativo e indicando que deseja executar como administrador.

Note

Um serviço que está sendo executado na LocalSystem conta não tem os privilégios necessários para executar esse método. A solução é verificar se a origem do evento existe no ServiceInstaller, e se ele não existe, para criar a origem no instalador.

Como você não pode dar a uma nova fonte o nome de uma origem existente no mesmo computador, use esse método antes de tentar chamar CreateEventSource para garantir que uma fonte com o nome especificado pelo source computador ainda não exista. machineName E os source parâmetros não diferenciam maiúsculas de minúsculas.

SourceExists é um static método, portanto, ele pode ser chamado na própria classe. Não é necessário criar uma instância de EventLog chamada SourceExists.

Confira também

Aplica-se a