EventLog.SourceExists Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 MyServer
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", "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.