EventLog.CreateEventSource Método

Definición

Establece una aplicación como capaz de escribir información de eventos en un determinado registro del sistema.

Sobrecargas

CreateEventSource(EventSourceCreationData)

Establece un origen de eventos válido para la escritura de mensajes de evento localizados, mediante las propiedades de configuración especificadas para el origen y el correspondiente registro de eventos.

CreateEventSource(String, String)

Establece el nombre de origen especificado como origen de eventos válido para la escritura de entradas en un registro del equipo local. Este método también puede crear un nuevo registro personalizado en el equipo local.

CreateEventSource(String, String, String)
Obsoletos.
Obsoletos.
Obsoletos.

Establece el nombre de origen especificado como origen de eventos válido para la escritura de entradas en un registro del equipo especificado. Este método puede utilizarse también para crear un nuevo registro personalizado en el equipo especificado.

CreateEventSource(EventSourceCreationData)

Establece un origen de eventos válido para la escritura de mensajes de evento localizados, mediante las propiedades de configuración especificadas para el origen y el correspondiente registro de eventos.

public:
 static void CreateEventSource(System::Diagnostics::EventSourceCreationData ^ sourceData);
public static void CreateEventSource (System.Diagnostics.EventSourceCreationData sourceData);
static member CreateEventSource : System.Diagnostics.EventSourceCreationData -> unit
Public Shared Sub CreateEventSource (sourceData As EventSourceCreationData)

Parámetros

sourceData
EventSourceCreationData

Propiedades de configuración para el origen de eventos y su registro de eventos de destino.

Excepciones

El nombre de equipo especificado en sourceData no es válido.

o bien

El nombre del origen especificado en sourceData es null.

o bien

El nombre de registro especificado en sourceData no es válido. Los nombres del registro de eventos deben constar de caracteres imprimibles y no pueden incluir los caracteres '*', '?' o '\'.

o bien

El nombre del registro especificado en sourceData no es válido para la creación de registros de usuario. Los nombres de registro de eventos AppEvent, SysEvent y SecEvent están reservados para uso del sistema.

o bien

El nombre del registro coincide con el nombre de un origen de eventos ya existente.

o bien

El nombre de origen especificado en sourceData produce una ruta de clave del Registro con una longitud superior a 254 caracteres.

o bien

Los 8 primeros caracteres del nombre del registro especificado en sourceData no son únicos.

o bien

El nombre de origen especificado en sourceData ya está registrado.

o bien

El nombre de origen especificado en sourceData coincide con un nombre del registro de eventos ya existente.

No se ha podido abrir la clave del Registro para el registro de eventos.

sourceData es null.

Ejemplos

En el ejemplo siguiente se determina si el origen del evento denominado SampleApplicationSource está registrado en el equipo local. Si el origen del evento no existe, en el ejemplo se establece el archivo de recursos del mensaje para el origen y se crea el nuevo origen de eventos. Por último, en el ejemplo se establece el nombre para mostrar localizado para el registro de eventos, con el valor de identificador de recurso en DisplayNameMsgId y la ruta de acceso del archivo de recursos en messageFile.

void CreateEventSourceSample1( String^ messageFile )
{
   String^ myLogName;
   String^ sourceName = "SampleApplicationSource";
   
   // Create the event source if it does not exist.
   if (  !EventLog::SourceExists( sourceName ) )
   {
      
      // Create a new event source for the custom event log
      // named "myNewLog."  
      myLogName = "myNewLog";
      EventSourceCreationData ^ mySourceData = gcnew EventSourceCreationData( sourceName,myLogName );
      
      // Set the message resource file that the event source references.
      // All event resource identifiers correspond to text in this file.
      if (  !System::IO::File::Exists( messageFile ) )
      {
         Console::WriteLine( "Input message resource file does not exist - {0}", messageFile );
         messageFile = "";
      }
      else
      {
         
         // Set the specified file as the resource
         // file for message text, category text, and 
         // message parameter strings.  
         mySourceData->MessageResourceFile = messageFile;
         mySourceData->CategoryResourceFile = messageFile;
         mySourceData->CategoryCount = CategoryCount;
         mySourceData->ParameterResourceFile = messageFile;
         Console::WriteLine( "Event source message resource file set to {0}", messageFile );
      }

      Console::WriteLine( "Registering new source for event log." );
      EventLog::CreateEventSource( mySourceData );
   }
   else
   {
      
      // Get the event log corresponding to the existing source.
      myLogName = EventLog::LogNameFromSourceName( sourceName, "." );
   }

   
   // Register the localized name of the event log.
   // For example, the actual name of the event log is "myNewLog," but
   // the event log name displayed in the Event Viewer might be
   // "Sample Application Log" or some other application-specific
   // text.
   EventLog^ myEventLog = gcnew EventLog( myLogName,".",sourceName );
   if ( messageFile->Length > 0 )
   {
      myEventLog->RegisterDisplayName( messageFile, DisplayNameMsgId );
   }   
}
static void CreateEventSourceSample1(string messageFile)
{
    string myLogName;
    string sourceName = "SampleApplicationSource";

    // Create the event source if it does not exist.
    if(!EventLog.SourceExists(sourceName))
    {
        // Create a new event source for the custom event log
        // named "myNewLog."

        myLogName = "myNewLog";
        EventSourceCreationData mySourceData = new EventSourceCreationData(sourceName, myLogName);

        // Set the message resource file that the event source references.
        // All event resource identifiers correspond to text in this file.
        if (!System.IO.File.Exists(messageFile))
        {
            Console.WriteLine("Input message resource file does not exist - {0}",
                messageFile);
            messageFile = "";
        }
        else
        {
            // Set the specified file as the resource
            // file for message text, category text, and
            // message parameter strings.

            mySourceData.MessageResourceFile = messageFile;
            mySourceData.CategoryResourceFile = messageFile;
            mySourceData.CategoryCount = CategoryCount;
            mySourceData.ParameterResourceFile = messageFile;

            Console.WriteLine("Event source message resource file set to {0}",
                messageFile);
        }

        Console.WriteLine("Registering new source for event log.");
        EventLog.CreateEventSource(mySourceData);
    }
    else
    {
        // Get the event log corresponding to the existing source.
        myLogName = EventLog.LogNameFromSourceName(sourceName,".");
    }

    // Register the localized name of the event log.
    // For example, the actual name of the event log is "myNewLog," but
    // the event log name displayed in the Event Viewer might be
    // "Sample Application Log" or some other application-specific
    // text.
    EventLog myEventLog = new EventLog(myLogName, ".", sourceName);

    if (messageFile.Length > 0)
    {
        myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId);
    }
}
Public Shared Sub CreateEventSourceSample1(ByVal messageFile As String)

    Dim myLogName As String
    Dim sourceName As String = "SampleApplicationSource"

    ' Create the event source if it does not exist.
    If Not EventLog.SourceExists(sourceName)
    
        ' Create a new event source for the custom event log
        ' named "myNewLog."  

        myLogName = "myNewLog"
        Dim mySourceData As EventSourceCreationData = New EventSourceCreationData(sourceName, myLogName)

        ' Set the message resource file that the event source references.
        ' All event resource identifiers correspond to text in this file.
        If Not System.IO.File.Exists(messageFile)

            Console.WriteLine("Input message resource file does not exist - {0}", _
                messageFile)
            messageFile = ""
        Else 
            ' Set the specified file as the resource
            ' file for message text, category text and 
            ' message parameters strings.

            mySourceData.MessageResourceFile = messageFile
            mySourceData.CategoryResourceFile = messageFile
            mySourceData.CategoryCount = CategoryCount
            mySourceData.ParameterResourceFile = messageFile

            Console.WriteLine("Event source message resource file set to {0}", _
                messageFile)
        End If

        Console.WriteLine("Registering new source for event log.")
        EventLog.CreateEventSource(mySourceData)
    Else
        ' Get the event log corresponding to the existing source.
        myLogName = EventLog.LogNameFromSourceName(sourceName,".")
    End If

    ' Register the localized name of the event log.
    ' For example, the actual name of the event log is "myNewLog," but
    ' the event log name displayed in the Event Viewer might be
    ' "Sample Application Log" or some other application-specific
    ' text.
    Dim myEventLog As EventLog = New EventLog(myLogName, ".", sourceName)
    
    If messageFile.Length > 0
        myEventLog.RegisterDisplayName(messageFile, DisplayNameMsgId)
    End If
End Sub

En el ejemplo se usa el siguiente archivo de texto de mensaje, integrado en la biblioteca de recursos EventLogMsgs.dll. Un archivo de texto de mensaje es el origen desde el que se crea el archivo de recursos del mensaje. El archivo de texto del mensaje define los identificadores de recursos y el texto de la categoría, el mensaje de evento y las cadenas de inserción de parámetros. En concreto, el identificador de recurso 5001 se define para el nombre localizado del registro de eventos.

; // EventLogMsgs.mc  
; // ********************************************************  

; // Use the following commands to build this file:  

; //   mc -s EventLogMsgs.mc  
; //   rc EventLogMsgs.rc  
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res   
; // ********************************************************  

; // - Event categories -  
; // Categories must be numbered consecutively starting at 1.  
; // ********************************************************  

MessageId=0x1  
Severity=Success  
SymbolicName=INSTALL_CATEGORY  
Language=English  
Installation  
.  

MessageId=0x2  
Severity=Success  
SymbolicName=QUERY_CATEGORY  
Language=English  
Database Query  
.  

MessageId=0x3  
Severity=Success  
SymbolicName=REFRESH_CATEGORY  
Language=English  
Data Refresh  
.  

; // - Event messages -  
; // *********************************  

MessageId = 1000  
Severity = Success  
Facility = Application  
SymbolicName = AUDIT_SUCCESS_MESSAGE_ID_1000  
Language=English  
My application message text, in English, for message id 1000, called from %1.  
.  

MessageId = 1001  
Severity = Warning  
Facility = Application  
SymbolicName = AUDIT_FAILED_MESSAGE_ID_1001  
Language=English  
My application message text, in English, for message id 1001, called from %1.  
.  

MessageId = 1002  
Severity = Success  
Facility = Application  
SymbolicName = GENERIC_INFO_MESSAGE_ID_1002  
Language=English  
My generic information message in English, for message id 1002.  
.  

MessageId = 1003  
Severity = Warning  
Facility = Application  
SymbolicName = GENERIC_WARNING_MESSAGE_ID_1003  
Language=English  
My generic warning message in English, for message id 1003, called from %1.  
.  

MessageId = 1004  
Severity = Success  
Facility = Application  
SymbolicName = UPDATE_CYCLE_COMPLETE_MESSAGE_ID_1004  
Language=English  
The update cycle is complete for %%5002.  
.  

MessageId = 1005  
Severity = Warning  
Facility = Application  
SymbolicName = SERVER_CONNECTION_DOWN_MESSAGE_ID_1005  
Language=English  
The refresh operation did not complete because the connection to server %1 could not be established.  
.  

; // - Event log display name -  
; // ********************************************************  

MessageId = 5001  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_DISPLAY_NAME_MSGID  
Language=English  
Sample Event Log  
.  

; // - Event message parameters -  
; //   Language independent insertion strings  
; // ********************************************************  

MessageId = 5002  
Severity = Success  
Facility = Application  
SymbolicName = EVENT_LOG_SERVICE_NAME_MSGID  
Language=English  
SVC_UPDATE.EXE  
.  

Comentarios

Use esta sobrecarga para configurar un nuevo origen para escribir entradas en un registro de eventos en el equipo local o en un equipo remoto. No es necesario usar este método para leer desde un registro de eventos.

El CreateEventSource método usa las propiedades de entrada LogNamesourceDataSourcey MachineName para crear valores del Registro en el equipo de destino para el nuevo origen y su registro de eventos asociado. Un nuevo nombre de origen no puede coincidir con un nombre de origen existente o un nombre de registro de eventos existente en el equipo de destino. Si no se establece la LogName propiedad , el origen se registra para el registro de eventos application. MachineName Si no se establece , el origen se registra en el equipo local.

Nota:

Para crear 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 al registro de seguridad, primero debe elevar los 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.

Use WriteEvent y WriteEntry para escribir eventos en un registro de eventos. Debe especificar un origen de eventos para escribir eventos; Debe crear y configurar el origen del evento antes de escribir la primera entrada con el origen.

Cree el nuevo origen de eventos durante la instalación de la aplicación. Esto permite que el sistema operativo actualice su lista de orígenes de eventos registrados y su configuración. Si el sistema operativo no ha actualizado su lista de orígenes de eventos e intenta escribir un evento con el nuevo origen, se producirá un error en la operación de escritura. Puede configurar un nuevo origen mediante EventLogInstaller, o mediante el CreateEventSource método . Debe tener derechos administrativos en el equipo para crear un nuevo origen de eventos.

Puede crear un origen de eventos para un registro de eventos existente o un nuevo registro de eventos. Cuando se crea un nuevo origen para un nuevo registro de eventos, el sistema registra el origen de ese registro, pero el registro no se crea hasta que se escribe la primera entrada.

El sistema operativo almacena los registros de eventos como archivos. Cuando se usa EventLogInstaller o CreateEventSource para crear un nuevo registro de eventos, el archivo asociado se almacena en el directorio %SystemRoot%\System32\Config en el equipo especificado. El nombre de archivo se establece anexando los primeros 8 caracteres de la Log propiedad con la extensión de nombre de archivo ".evt".

Cada origen solo puede escribir en un registro de eventos a la vez; sin embargo, la aplicación puede usar varios orígenes para escribir en varios registros de eventos. Por ejemplo, la aplicación podría requerir varios orígenes configurados para distintos registros de eventos o archivos de recursos diferentes.

Puede registrar el origen del evento con archivos de recursos localizados para la categoría de eventos y las cadenas de mensaje. La aplicación puede escribir entradas de registro de eventos mediante identificadores de recursos, en lugar de especificar la cadena real. El Visor de eventos usa el identificador de recursos para buscar y mostrar la cadena correspondiente del archivo de recursos localizado en función de la configuración de idioma actual. Puede registrar un archivo independiente para categorías de eventos, mensajes y cadenas de inserción de parámetros, o puede registrar el mismo archivo de recursos para los tres tipos de cadenas. Use las CategoryCountpropiedades , CategoryResourceFile, MessageResourceFiley ParameterResourceFile para configurar el origen para escribir entradas localizadas en el registro de eventos. Si la aplicación escribe valores de cadenas directamente en el registro de eventos, no es necesario establecer estas propiedades.

El origen debe configurarse para escribir entradas localizadas o para escribir cadenas directas. Si la aplicación escribe entradas mediante identificadores de recursos y valores de cadena, debe registrar dos orígenes independientes. Por ejemplo, configure un origen con archivos de recursos y, a continuación, use ese origen en el WriteEvent método para escribir entradas mediante identificadores de recursos en el registro de eventos. A continuación, cree un origen diferente sin archivos de recursos y use ese origen en el WriteEntry método para escribir cadenas directamente en el registro de eventos mediante ese origen.

Para cambiar los detalles de configuración de un origen existente, debe eliminar el origen y, a continuación, crearlo con la nueva configuración. Si otras aplicaciones o componentes usan el origen existente, cree un nuevo origen con la configuración actualizada en lugar de eliminar el origen existente.

Nota:

Si un origen está configurado para un registro de eventos y vuelve a configurarlo para otro registro de eventos, debe reiniciar el equipo para que los cambios surtan efecto.

Consulte también

Se aplica a

CreateEventSource(String, String)

Establece el nombre de origen especificado como origen de eventos válido para la escritura de entradas en un registro del equipo local. Este método también puede crear un nuevo registro personalizado en el equipo local.

public:
 static void CreateEventSource(System::String ^ source, System::String ^ logName);
public static void CreateEventSource (string source, string logName);
static member CreateEventSource : string * string -> unit
Public Shared Sub CreateEventSource (source As String, logName As String)

Parámetros

source
String

Nombre del origen por el que se registra la aplicación en el equipo local.

logName
String

Nombre del registro en el que se escriben las entradas del origen. Entre los posibles valores se incluye Aplicación, Sistema o un registro de eventos personalizado.

Excepciones

source es una cadena vacía ("") o null.

o bien

logName no es un nombre de registro de eventos válido. Los nombres del registro de eventos deben constar de caracteres imprimibles y no pueden incluir los caracteres '*', '?' o '\'.

o bien

logName no es válido para la creación del registro de usuario. Los nombres de registro de eventos AppEvent, SysEvent y SecEvent están reservados para uso del sistema.

o bien

El nombre del registro coincide con el nombre de un origen de eventos ya existente.

o bien

El nombre de origen produce una ruta de clave del Registro con una longitud superior a 254 caracteres.

o bien

Los 8 primeros caracteres de logName coinciden con los 8 primeros caracteres del nombre de un registro de eventos ya existente.

o bien

No puede registrarse el origen porque ya existe en el equipo local.

o bien

El nombre del origen coincide con el nombre de un registro de eventos ya existente.

No se ha podido abrir en el equipo local la clave del Registro para el registro de eventos.

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" ) )
   {
      //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" );
      // The source is created.  Exit the application to allow it to be registered.
      return 0;
   }

   
   // 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." );
}
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("CreatedEventSource");
            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.");
    }
}
Option Explicit
Option Strict

Imports System.Diagnostics
Imports System.Threading

Class MySample
    Public Shared Sub Main()
        
        If Not EventLog.SourceExists("MySource") Then
            ' Create the source, if it does not already exist.
            ' 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")
            'The source is created.  Exit the application to allow it to be registered.
            Return
        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.")
    End Sub
End Class

Comentarios

Use esta sobrecarga para crear un registro personalizado o para crear y registrar un en Source un registro existente en el equipo local.

Si logName es null o una cadena vacía ("") al llamar a CreateEventSource, el registro tiene como valor predeterminado el registro de la aplicación. Si el registro no existe en el equipo local, el sistema crea un registro personalizado y registra la aplicación como para Source ese registro.

Nota:

Para crear 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 .

En Windows Vista y versiones posteriores, 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 al registro de seguridad, primero debe elevar los 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.

Solo tiene que crear un origen de eventos si está escribiendo en el registro de eventos. Antes de escribir una entrada en un registro de eventos, debe registrar el origen del evento con el registro de eventos como un origen válido de eventos. Al escribir una entrada de registro, el sistema usa para Source buscar el registro adecuado en el que colocar la entrada. Si va a leer el registro de eventos, puede especificar , Sourceo y LogMachineName.

Nota

No es necesario especificar si MachineName se está conectando a un registro en el equipo local. Si no especifica al MachineName leer desde un registro, se asume el equipo local (".").

Use WriteEvent y WriteEntry para escribir eventos en un registro de eventos. Debe especificar un origen de eventos para escribir eventos; Debe crear y configurar el origen del evento antes de escribir la primera entrada con el origen.

Cree el nuevo origen de eventos durante la instalación de la aplicación. Esto permite que el sistema operativo actualice su lista de orígenes de eventos registrados y su configuración. Si el sistema operativo no ha actualizado su lista de orígenes de eventos e intenta escribir un evento con el nuevo origen, se producirá un error en la operación de escritura. Puede configurar un nuevo origen mediante EventLogInstaller, o mediante el CreateEventSource método . Debe tener derechos administrativos en el equipo para crear un nuevo origen de eventos.

Puede crear un origen de eventos para un registro de eventos existente o un nuevo registro de eventos. Cuando se crea un nuevo origen para un nuevo registro de eventos, el sistema registra el origen de ese registro, pero el registro no se crea hasta que se escribe la primera entrada.

El sistema operativo almacena los registros de eventos como archivos. Cuando se usa EventLogInstaller o CreateEventSource para crear un nuevo registro de eventos, el archivo asociado se almacena en el directorio %SystemRoot%\System32\Config en el equipo especificado. El nombre de archivo se establece anexando los primeros 8 caracteres de la Log propiedad con la extensión de nombre de archivo ".evt".

El origen debe ser único en el equipo local; Un nuevo nombre de origen no puede coincidir con un nombre de origen existente o un nombre de registro de eventos existente. Cada origen solo puede escribir en un registro de eventos a la vez; sin embargo, la aplicación puede usar varios orígenes para escribir en varios registros de eventos. Por ejemplo, la aplicación podría requerir varios orígenes configurados para distintos registros de eventos o archivos de recursos diferentes.

El origen debe configurarse para escribir entradas localizadas o para escribir cadenas directas. Si la aplicación escribe entradas mediante identificadores de recursos y valores de cadena, debe registrar dos orígenes independientes. Por ejemplo, configure un origen con archivos de recursos y, a continuación, use ese origen en el WriteEvent método para escribir entradas mediante identificadores de recursos en el registro de eventos. A continuación, cree un origen diferente sin archivos de recursos y use ese origen en el WriteEntry método para escribir cadenas directamente en el registro de eventos mediante ese origen.

Para cambiar los detalles de configuración de un origen existente, debe eliminar el origen y, a continuación, crearlo con la nueva configuración. Si otras aplicaciones o componentes usan el origen existente, cree un nuevo origen con la configuración actualizada en lugar de eliminar el origen existente.

Nota

Si ya se ha asignado un origen a un registro y se vuelve a asignar a un nuevo registro, debe reiniciar el equipo para que los cambios surtan efecto.

Consulte también

Se aplica a

CreateEventSource(String, String, String)

Precaución

This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. http://go.microsoft.com/fwlink/?linkid=14202

Precaución

This method has been deprecated. Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead. https://go.microsoft.com/fwlink/?linkid=14202

Precaución

EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.

Establece el nombre de origen especificado como origen de eventos válido para la escritura de entradas en un registro del equipo especificado. Este método puede utilizarse también para crear un nuevo registro personalizado en el equipo especificado.

public:
 static void CreateEventSource(System::String ^ source, System::String ^ logName, System::String ^ machineName);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")]
public static void CreateEventSource (string source, string logName, string machineName);
public static void CreateEventSource (string source, string logName, string machineName);
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")>]
static member CreateEventSource : string * string * string -> unit
static member CreateEventSource : string * string * string -> unit
Public Shared Sub CreateEventSource (source As String, logName As String, machineName As String)

Parámetros

source
String

Origen mediante el que se registra la aplicación en el equipo especificado.

logName
String

Nombre del registro en el que se escriben las entradas del origen. Entre los posibles valores se incluye Aplicación, Sistema o un registro de eventos personalizado. Si no se especifica un valor logName toma Aplicación como valor predeterminado.

machineName
String

Nombre del equipo con el que se va a registrar este origen de eventos o "." para el equipo local.

Atributos

Excepciones

machineName no es un nombre de equipo válido.

o bien

source es una cadena vacía ("") o null.

o bien

logName no es un nombre de registro de eventos válido. Los nombres del registro de eventos deben constar de caracteres imprimibles y no pueden incluir los caracteres '*', '?' o '\'.

o bien

logName no es válido para la creación del registro de usuario. Los nombres de registro de eventos AppEvent, SysEvent y SecEvent están reservados para uso del sistema.

o bien

El nombre del registro coincide con el nombre de un origen de eventos ya existente.

o bien

El nombre de origen produce una ruta de clave del Registro con una longitud superior a 254 caracteres.

o bien

Los 8 primeros caracteres de logName coinciden con los 8 primeros caracteres del nombre de un registro de eventos ya existente en el equipo especificado.

o bien

No puede registrarse el origen porque ya existe en el equipo especificado.

o bien

El nombre del origen coincide con el nombre de un origen de eventos ya existente.

No se ha podido abrir en el equipo especificado la clave del Registro para el registro de eventos.

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 esta sobrecarga para crear un registro personalizado o para crear y registrar un en Source un registro existente en el equipo especificado.

Si logName es null o una cadena vacía ("") al llamar a CreateEventSource, el registro tiene como valor predeterminado el registro de la aplicación. Si el registro no existe en el equipo especificado, el sistema crea un registro personalizado y registra la aplicación como para Source ese registro.

Solo tiene que crear un origen de eventos si está escribiendo en el registro de eventos. Antes de escribir una entrada en un registro de eventos, debe registrar el origen del evento con el registro de eventos como un origen válido de eventos. Al escribir una entrada de registro, el sistema usa para Source buscar el registro adecuado en el que colocar la entrada. Si va a leer el registro de eventos, puede especificar , Sourceo y LogMachineName.

Nota:

Para crear 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. En Windows Vista y versiones posteriores, los usuarios no tienen permiso para acceder al registro de seguridad; por lo tanto, se produce una SecurityException excepción .

En Windows Vista y versiones posteriores, 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 al registro de seguridad, primero debe elevar los 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.

Use WriteEvent y WriteEntry para escribir eventos en un registro de eventos. Debe especificar un origen de eventos para escribir eventos; Debe crear y configurar el origen del evento antes de escribir la primera entrada con el origen.

Cree el nuevo origen de eventos durante la instalación de la aplicación. Esto permite que el sistema operativo actualice su lista de orígenes de eventos registrados y su configuración. Si el sistema operativo no ha actualizado su lista de orígenes de eventos e intenta escribir un evento con el nuevo origen, se producirá un error en la operación de escritura. Puede configurar un nuevo origen mediante EventLogInstaller, o mediante el CreateEventSource método . Debe tener derechos administrativos en el equipo para crear un nuevo origen de eventos.

Puede crear un origen de eventos para un registro de eventos existente o un nuevo registro de eventos. Cuando se crea un nuevo origen para un nuevo registro de eventos, el sistema registra el origen de ese registro, pero el registro no se crea hasta que se escribe la primera entrada.

El sistema operativo almacena los registros de eventos como archivos. Cuando se usa EventLogInstaller o CreateEventSource para crear un nuevo registro de eventos, el archivo asociado se almacena en el directorio %SystemRoot%\System32\Config en el equipo especificado. El nombre de archivo se establece anexando los primeros 8 caracteres de la Log propiedad con la extensión de nombre de archivo ".evt".

El origen debe ser único en el equipo local; Un nuevo nombre de origen no puede coincidir con un nombre de origen existente o un nombre de registro de eventos existente. Cada origen solo puede escribir en un registro de eventos a la vez; sin embargo, la aplicación puede usar varios orígenes para escribir en varios registros de eventos. Por ejemplo, la aplicación podría requerir varios orígenes configurados para distintos registros de eventos o archivos de recursos diferentes.

El origen debe configurarse para escribir entradas localizadas o para escribir cadenas directas. Si la aplicación escribe entradas mediante identificadores de recursos y valores de cadena, debe registrar dos orígenes independientes. Por ejemplo, configure un origen con archivos de recursos y, a continuación, use ese origen en el WriteEvent método para escribir entradas mediante identificadores de recursos en el registro de eventos. A continuación, cree un origen diferente sin archivos de recursos y use ese origen en el WriteEntry método para escribir cadenas directamente en el registro de eventos mediante ese origen.

Para cambiar los detalles de configuración de un origen existente, debe eliminar el origen y, a continuación, crearlo con la nueva configuración. Si otras aplicaciones o componentes usan el origen existente, cree un nuevo origen con la configuración actualizada en lugar de eliminar el origen existente.

Nota:

Si ya se ha asignado un origen a un registro y se vuelve a asignar a un nuevo registro, debe reiniciar el equipo para que los cambios surtan efecto.

Consulte también

Se aplica a