EventLog.SourceExists Método

Definição

Pesquisa no registo de um computador por uma determinada fonte de evento.

Sobrecargas

Name Description
SourceExists(String)

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

SourceExists(String, String)

Determina se uma fonte de evento está registada num computador especificado.

SourceExists(String)

Determina se uma fonte de evento está registada 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 fonte do evento.

Devoluções

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

Exceções

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

Exemplos

O exemplo seguinte cria a fonte MySource se esta ainda não existir, e escreve uma entrada no registo MyNewLogde eventos .

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

Observações

Use este método para determinar se existe uma fonte de eventos no computador local. Se quiser determinar se existe um registo no computador local, use Exists.

Como este método acede ao registo, deve ter as permissões de registo apropriadas no computador local; caso contrário, o testamento A SecurityException é lançado.

Note

Para procurar uma fonte de evento no Windows Vista e versões posteriores ou no Windows Server 2003, deve ter privilégios administrativos.

A razão para este requisito é que todos os registos de eventos, incluindo a segurança, devem ser pesquisados para determinar se a fonte do evento é única. A partir de Windows Vista, os utilizadores não têm permissão para aceder ao registo de segurança; portanto, é lançado um SecurityException.

A partir do Windows Vista, o Controlo de Conta de Utilizador (UAC) determina os privilégios de um utilizador. Se for membro do grupo Administradores Incorporados, é-lhe atribuídos dois tokens de acesso em tempo de execução: um token de acesso de utilizador 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 acede aos contadores de desempenho, deve primeiro elevar os seus privilégios de utilizador padrão a 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á a executar sob a LocalSystem conta não tem os privilégios necessários para executar este método. A solução é verificar se a fonte do evento existe no ServiceInstaller, e, se não existir, criar a fonte no instalador.

Como não pode atribuir a uma nova fonte o nome de uma fonte existente no mesmo computador, use este método antes de tentar chamar CreateEventSource para garantir que uma fonte com o nome especificado por source não existe já no computador local. O source parâmetro não é sensível a maiúsculas minúsculas.

Ver também

Aplica-se a

SourceExists(String, String)

Determina se uma fonte de evento está registada num 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 fonte do evento.

machineName
String

O nome do computador onde deve procurar, ou "." para o computador local.

Devoluções

true se a fonte do evento estiver registada no computador em questão; caso contrário, false.

Exceções

machineName é um nome de computador inválido.

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

Exemplos

O exemplo seguinte cria a fonte MySource no computador MyServer, e escreve uma entrada no registo MyNewLogde eventos .

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

Observações

Use este método para determinar se existe uma fonte de eventos no computador especificado pelo machineName parâmetro. Se quiser determinar se existe um registo no computador especificado, use Exists.

Como este método acede ao registo, deve ter as permissões de registo apropriadas no servidor em questão; caso contrário, o testamento A SecurityException é lançado.

Note

Para procurar uma fonte de evento no Windows Vista e versões posteriores ou no Windows Server 2003, deve ter privilégios administrativos.

A razão para este requisito é que todos os registos de eventos, incluindo a segurança, devem ser pesquisados para determinar se a fonte do evento é única. A partir de Windows Vista, os utilizadores não têm permissão para aceder ao registo de segurança; portanto, é lançado um SecurityException.

A partir do Windows Vista, o Controlo de Conta de Utilizador (UAC) determina os privilégios de um utilizador. Se for membro do grupo Administradores Incorporados, é-lhe atribuídos dois tokens de acesso em tempo de execução: um token de acesso de utilizador 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 acede aos contadores de desempenho, deve primeiro elevar os seus privilégios de utilizador padrão a 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á a executar sob a LocalSystem conta não tem os privilégios necessários para executar este método. A solução é verificar se a fonte do evento existe no ServiceInstaller, e, se não existir, criar a fonte no instalador.

Como não pode dar a uma nova fonte o nome de uma fonte existente no mesmo computador, use este método antes de tentar chamar CreateEventSource para garantir que uma fonte com o nome especificado por source não existe já no computador. Os source parâmetros e machineName não distinguem maiúsculas e minúsculas.

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

Ver também

Aplica-se a