Compartilhar via


EventLog.SourceExists Método

Definição

Pesquisa determinada origem do evento no Registro do computador.

Sobrecargas

SourceExists(String)

Determina se um evento de origem foi registrado no computador local.

SourceExists(String, String)

Determina se uma origem do evento está registrada em um computador especificado.

SourceExists(String)

Origem:
EventLog.cs
Origem:
EventLog.cs
Origem:
EventLog.cs

Determina se um evento de origem foi registrado 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 for registrada no computador local; caso contrário, false.

Exceções

source não foi encontrado, mas alguns ou todos os logs de evento 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.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

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.

Observação

Para pesquisar uma origem de evento no Windows Vista e posterior ou no Windows Server 2003, você deve ter privilégios administrativos.

O motivo para esse 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 é gerado.

A partir do Windows Vista, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se for um membro do grupo Administradores Internos, você receberá dois tokens de acesso do tempo de execução: um token de acesso do usuário padrão e um token de acesso do 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 você deseja executar como administrador.

Observação

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 é marcar se a origem do ServiceInstallerevento existe no e, se ela não existir, para criar a origem no instalador.

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

Confira também

Aplica-se a

SourceExists(String, String)

Origem:
EventLog.cs
Origem:
EventLog.cs
Origem:
EventLog.cs

Determina se uma origem do 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 for registrada no computador especificado; caso contrário, false.

Exceções

machineName é um nome do computador inválido.

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

Exemplos

O exemplo a seguir cria a origem MySource no computador MyServere grava uma entrada no log de eventos 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", "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

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.

Observação

Para pesquisar uma origem de evento no Windows Vista e posterior ou no Windows Server 2003, você deve ter privilégios administrativos.

O motivo para esse 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 é gerado.

A partir do Windows Vista, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se for um membro do grupo Administradores Internos, você receberá dois tokens de acesso do tempo de execução: um token de acesso do usuário padrão e um token de acesso do 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 você deseja executar como administrador.

Observação

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 é marcar se a origem do ServiceInstallerevento existe no e, se ela não existir, para criar a origem no instalador.

Como você não pode dar a uma nova fonte o nome de uma fonte existente no mesmo computador, use esse método antes de tentar chamar CreateEventSource para garantir que uma fonte com o nome especificado por source ainda não exista no computador. Os source parâmetros e machineName 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 para chamar SourceExists.

Confira também

Aplica-se a