Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método EventLog.CreateEventSource (EventSourceCreationData)

 

Publicado: octubre de 2016

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.

Espacio de nombres:   System.Diagnostics
Ensamblado:  System (en System.dll)

Public Shared Sub CreateEventSource (
	sourceData As EventSourceCreationData
)

Parámetros

sourceData
Type: System.Diagnostics.EventSourceCreationData

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

Exception Condition
ArgumentException

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

o bien

El nombre de origen especificado en sourceData es null.

o bien

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

o bien

El nombre de 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 un nombre de origen de eventos existente.

o bien

El nombre de origen especificado en sourceData da lugar a una ruta de clave del registro más de 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 de registro de eventos existente.

InvalidOperationException

No se pudo abrir la clave del registro para el registro de eventos.

ArgumentNullException

El valor de sourceData es null.

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

El CreateEventSource método usa la entrada sourceDataSource, LogName y MachineName Propiedades 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 origen o un registro de eventos existente en el equipo de destino. Si el LogName no está establecida la propiedad, se registra el origen para el registro de eventos de aplicación. Si el MachineName no está establecido, el origen está registrado en el equipo local.

System_CAPS_noteNota

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 tener acceso al registro de seguridad; por lo tanto, un SecurityException se produce.

A partir de Windows Vista, 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 tiene acceso el registro de seguridad, primero debe elevar sus privilegios de usuario estándar a 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 los eventos; debe crear y configurar el origen del evento antes de escribir la primera entrada con el origen.

Crear el nuevo origen de eventos durante la instalación de la aplicación. Esto da tiempo para el sistema operativo actualizar la 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 y se intenta escribir un evento con el nuevo origen, que se producirá un error en la operación de escritura. Puede configurar un nuevo origen mediante un 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 registro de eventos. Cuando se crea un nuevo origen para un registro de eventos, el sistema registra el origen para ese registro, pero no se crea el registro hasta que la primera entrada que se escriba en él.

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

Cada origen sólo puede escribir en un único registro de eventos a la vez; Sin embargo, la aplicación puede utilizar varios orígenes para escribir en varios registros de eventos. Por ejemplo, la aplicación podría requerir configurados para diferentes registros de eventos o archivos de recursos de varios orígenes.

Puede registrar el origen de eventos con los archivos de recursos localizados para las cadenas de categoría y el mensaje de evento. La aplicación puede escribir entradas del registro de eventos con identificadores de recursos, en lugar de especificar la cadena real. El Visor de eventos utiliza el identificador del recurso para buscar y mostrar la cadena correspondiente del archivo de recursos localizados según la configuración de idioma actual. Puede registrarse un archivo independiente para las categorías de eventos, mensajes y las cadenas de inserción de parámetro, o puede registrar el mismo archivo de recursos para los tres tipos de cadenas. Utilice la CategoryCount, CategoryResourceFile, MessageResourceFile, y ParameterResourceFile Propiedades para configurar el origen para escribir entradas adaptadas en el registro de eventos. Si la aplicación escribe valores de cadena directamente en el registro de eventos, no es necesario establecer estas propiedades.

El origen debe configurarse para escribir entradas adaptadas o cadenas directas. Si la aplicación escribe las entradas mediante identificadores de recursos y valores de cadena, debe registrarse dos orígenes diferentes. Por ejemplo, configurar un origen con archivos de recursos y, a continuación, usar 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 usarlo en el WriteEntry método para escribir cadenas directamente en el registro de eventos utilizando ese origen.

Para cambiar los detalles de configuración de un origen existente, debe eliminar el origen y, a continuación, vuelva a crearla con la nueva configuración. Si otras aplicaciones o componentes utilizan el origen existente, crear un nuevo origen con la configuración actualizada en lugar de eliminarlo.

System_CAPS_noteNota

Si se configura un origen para un registro de eventos y volver a configurar para otro registro de eventos, debe reiniciar el equipo para que surtan efecto los cambios.

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

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

El ejemplo utiliza 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 creó el archivo de recursos de mensaje. El archivo de texto de mensaje define los identificadores de recursos y el texto de categoría, mensaje de evento y las cadenas de inserción de parámetro. En concreto, el identificador de recursos 5001 se define para el nombre traducido 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
.

EventLogPermission

for administering event log information on the computer. Associated enumeration: F:System.Diagnostics.EventLogPermissionAccess.Administer

.NET Framework
Disponible desde 2.0
Volver al principio
Mostrar: