Compartir vía


EventLog.CreateEventSource Método

Definición

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

Sobrecargas

CreateEventSource(EventSourceCreationData)

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

CreateEventSource(String, String)

Establece el nombre de origen especificado como un origen de eventos válido para escribir entradas en un registro en el 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 un origen de eventos válido para escribir entradas en un registro en el equipo especificado. Este método también se puede usar para crear un nuevo registro personalizado en el equipo especificado.

CreateEventSource(EventSourceCreationData)

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

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

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 del evento y su registro de eventos de destino.

Excepciones

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

-o-

El nombre de origen especificado en sourceData es null.

-o-

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-

El nombre de registro especificado en sourceData 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-

El nombre del registro coincide con un nombre de origen de evento existente.

-o-

El nombre de origen especificado en sourceData da como resultado una ruta de acceso de clave del Registro de más de 254 caracteres.

-o-

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

-o-

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

-o-

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

No se pudo abrir la clave del Registro de eventos 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 de 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 método CreateEventSource usa las propiedades de entrada sourceDataSource, LogName y 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 propiedad LogName, el origen se registra para el registro de eventos application. Si no se establece el MachineName, 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 un SecurityException.

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 asignan dos tokens de acceso en tiempo de ejecución: un token de acceso de usuario estándar y un token de acceso de administrador. De forma predeterminada, está en el rol de usuario estándar. Para ejecutar el código que tiene acceso al registro de seguridad, primero debe elevar los privilegios del usuario estándar al administrador. Puede hacerlo al iniciar una aplicación haciendo clic con el botón derecho en el icono de la aplicación e indicando que desea ejecutar 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 un EventLogInstallero mediante el método CreateEventSource. 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. Al crear 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 registro de eventos, el archivo asociado se almacena en el directorio %SystemRoot%\System32\Config del equipo especificado. El nombre de archivo se establece anexando los primeros 8 caracteres de la propiedad Log 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 propiedades CategoryCount, 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 con 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 método WriteEvent para escribir entradas mediante identificadores de recursos en el registro de eventos. A continuación, cree otro origen sin archivos de recursos y use ese origen en el método WriteEntry 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 se vuelve a configurar para otro registro de eventos, debe reiniciar el equipo para que los cambios surtan efecto.

Consulte también

Se aplica a

CreateEventSource(String, String)

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

Establece el nombre de origen especificado como un origen de eventos válido para escribir entradas en un registro en el 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 de 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 valores posibles se incluyen Application, System o un registro de eventos personalizado.

Excepciones

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

-o-

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-

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-

El nombre del registro coincide con un nombre de origen de evento existente.

-o-

El nombre de origen da como resultado una ruta de acceso de clave del Registro de más de 254 caracteres.

-o-

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

-o-

No se puede registrar el origen porque ya existe en el equipo local.

-o-

El nombre de origen coincide con un nombre de registro de eventos existente.

No se pudo abrir la clave del Registro de eventos en el equipo local.

Ejemplos

En el ejemplo siguiente se crea el MySource de origen 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 Source en 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 aplicación. Si el registro no existe en el equipo local, el sistema crea un registro personalizado y registra la aplicación como un Source para 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 un SecurityException.

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 asignan dos tokens de acceso en tiempo de ejecución: un token de acceso de usuario estándar y un token de acceso de administrador. De forma predeterminada, está en el rol de usuario estándar. Para ejecutar el código que tiene acceso al registro de seguridad, primero debe elevar los privilegios del usuario estándar al administrador. Puede hacerlo al iniciar una aplicación haciendo clic con el botón derecho en el icono de la aplicación e indicando que desea ejecutar 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 el Source para buscar el registro adecuado en el que colocar la entrada. Si está leyendo el registro de eventos, puede especificar el Sourceo un Log y MachineName.

Nota

No es necesario especificar el MachineName si se conecta a un inicio de sesión en el equipo local. Si no especifica el MachineName al 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 un EventLogInstallero mediante el método CreateEventSource. 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. Al crear 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 registro de eventos, el archivo asociado se almacena en el directorio %SystemRoot%\System32\Config del equipo especificado. El nombre de archivo se establece anexando los primeros 8 caracteres de la propiedad Log 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 con 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 método WriteEvent para escribir entradas mediante identificadores de recursos en el registro de eventos. A continuación, cree otro origen sin archivos de recursos y use ese origen en el método WriteEntry 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 registro nuevo, debe reiniciar el equipo para que los cambios surtan efecto.

Consulte también

Se aplica a

CreateEventSource(String, String, String)

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

Precaución

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

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

Establece el nombre de origen especificado como un origen de eventos válido para escribir entradas en un registro en el equipo especificado. Este método también se puede usar 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("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")]
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.")>]
static member CreateEventSource : string * string * string -> unit
static member CreateEventSource : string * string * string -> unit
[<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
Public Shared Sub CreateEventSource (source As String, logName As String, machineName As String)

Parámetros

source
String

Origen por 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 valores posibles se incluyen Application, System o un registro de eventos personalizado. Si no especifica un valor, logName el valor predeterminado es Application.

machineName
String

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

Atributos

Excepciones

El machineName no es un nombre de equipo válido.

-o-

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

-o-

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-

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-

El nombre del registro coincide con un nombre de origen de evento existente.

-o-

El nombre de origen da como resultado una ruta de acceso de clave del Registro de más de 254 caracteres.

-o-

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

-o-

No se puede registrar el origen porque ya existe en el equipo especificado.

-o-

El nombre de origen coincide con un nombre de origen de evento existente.

No se pudo abrir la clave del Registro de eventos para el equipo especificado.

Ejemplos

En el ejemplo siguiente se crea el MySource de origen 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 Source en 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 aplicación. Si el registro no existe en el equipo especificado, el sistema crea un registro personalizado y registra la aplicación como un Source para 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 el Source para buscar el registro adecuado en el que colocar la entrada. Si está leyendo el registro de eventos, puede especificar el Sourceo un Log y MachineName.

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 un SecurityException.

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 asignan dos tokens de acceso en tiempo de ejecución: un token de acceso de usuario estándar y un token de acceso de administrador. De forma predeterminada, está en el rol de usuario estándar. Para ejecutar el código que tiene acceso al registro de seguridad, primero debe elevar los privilegios del usuario estándar al administrador. Puede hacerlo al iniciar una aplicación haciendo clic con el botón derecho en el icono de la aplicación e indicando que desea ejecutar 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 un EventLogInstallero mediante el método CreateEventSource. 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. Al crear 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 registro de eventos, el archivo asociado se almacena en el directorio %SystemRoot%\System32\Config del equipo especificado. El nombre de archivo se establece anexando los primeros 8 caracteres de la propiedad Log 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 con 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 método WriteEvent para escribir entradas mediante identificadores de recursos en el registro de eventos. A continuación, cree otro origen sin archivos de recursos y use ese origen en el método WriteEntry 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 registro nuevo, debe reiniciar el equipo para que los cambios surtan efecto.

Consulte también

Se aplica a