EventLog.SourceExists Método

Definición

Busca un origen de eventos dado en el Registro de un equipo.

Sobrecargas

SourceExists(String)

Determina si un origen de eventos está registrado en el equipo local.

SourceExists(String, String)

Determina si un origen de eventos está registrado en un equipo especificado.

SourceExists(String)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

Determina si un origen de eventos está registrado en el equipo 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

Nombre del origen de eventos.

Devoluciones

true si el origen de eventos está registrado en el equipo local; en caso contrario, false.

Excepciones

No se ha encontrado source, aunque no se ha podido buscar en algunos de los registros de eventos o en ninguno.

Ejemplos

En el ejemplo siguiente se crea el origen MySource si aún no existe y se escribe una entrada en el registro 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

Comentarios

Use este método para determinar si existe un origen de eventos en el equipo local. Si desea determinar si existe un registro en el equipo local, use Exists.

Dado que este método accede al registro, debe tener los permisos del Registro adecuados en el equipo local; de lo contrario, se producirá una SecurityException excepción .

Nota

Para buscar un origen de eventos en Windows Vista y versiones posteriores o Windows Server 2003, debe tener privilegios administrativos.

El motivo de este requisito es que se deben buscar todos los registros de eventos, incluida la seguridad, para determinar si el origen del evento es único. A partir de Windows Vista, los usuarios no tienen permiso para acceder al registro de seguridad; por lo tanto, se produce una SecurityException excepción .

A partir de Windows Vista, el Control de cuentas de usuario (UAC) determina los privilegios de un usuario. Si es miembro del grupo Administradores integrados, se le asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador. De forma predeterminada, se le asignará el rol de usuario estándar. Para ejecutar el código que accede a los contadores de rendimiento, primero debe elevar sus privilegios del usuario estándar al administrador. Para ello, inicie una aplicación haciendo clic con el botón derecho en el icono de la aplicación e indique que desea ejecutarla como administrador.

Nota

Un servicio que se ejecuta en la LocalSystem cuenta no tiene los privilegios necesarios para ejecutar este método. La solución consiste en comprobar si el origen del evento existe en ServiceInstallery, si no existe, para crear el origen en el instalador.

Dado que no puede asignar un nuevo origen al nombre de un origen existente en el mismo equipo, use este método antes de intentar llamar CreateEventSource a para asegurarse de que un origen con el nombre especificado por source no existe aún en el equipo local. El source parámetro no distingue mayúsculas de minúsculas.

Consulte también

Se aplica a

SourceExists(String, String)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

Determina si un origen de eventos está registrado en un equipo 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

Nombre del origen de eventos.

machineName
String

Nombre del equipo en el se debe buscar o "." para el equipo local.

Devoluciones

Es true si el origen de eventos está registrado en el equipo dado; en caso contrario, es false.

Excepciones

machineName no es un nombre de equipo válido.

No se ha encontrado source, aunque no se ha podido buscar en algunos de los registros de eventos o en ninguno.

Ejemplos

En el ejemplo siguiente se crea el origen MySource en el equipo MyServery se escribe una entrada en el registro 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

Comentarios

Use este método para determinar si existe un origen de eventos en el equipo especificado por el machineName parámetro . Si desea determinar si existe un registro en el equipo especificado, use Exists.

Dado que este método tiene acceso al Registro, debe tener los permisos del Registro adecuados en el servidor especificado; de lo contrario, se producirá una SecurityException excepción .

Nota

Para buscar un origen de eventos en Windows Vista y versiones posteriores o Windows Server 2003, debe tener privilegios administrativos.

El motivo de este requisito es que se deben buscar todos los registros de eventos, incluida la seguridad, para determinar si el origen del evento es único. A partir de Windows Vista, los usuarios no tienen permiso para acceder al registro de seguridad; por lo tanto, se produce una SecurityException excepción .

A partir de Windows Vista, el Control de cuentas de usuario (UAC) determina los privilegios de un usuario. Si es miembro del grupo Administradores integrados, se le asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador. De forma predeterminada, se le asignará el rol de usuario estándar. Para ejecutar el código que accede a los contadores de rendimiento, primero debe elevar sus privilegios del usuario estándar al administrador. Para ello, inicie una aplicación haciendo clic con el botón derecho en el icono de la aplicación e indique que desea ejecutarla como administrador.

Nota

Un servicio que se ejecuta en la LocalSystem cuenta no tiene los privilegios necesarios para ejecutar este método. La solución consiste en comprobar si el origen del evento existe en ServiceInstallery, si no existe, para crear el origen en el instalador.

Dado que no se puede proporcionar a un nuevo origen el nombre de un origen existente en el mismo equipo, use este método antes de intentar llamar CreateEventSource a para asegurarse de que un origen con el nombre especificado por source no existe en el equipo. Los source parámetros y machineName no distinguen mayúsculas de minúsculas.

SourceExists es un static método, por lo que se puede llamar a en la propia clase. No es necesario crear una instancia de EventLog para llamar SourceExistsa .

Consulte también

Se aplica a