Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo EventLog.CreateEventSource (EventSourceCreationData)

 

Data di pubblicazione: ottobre 2016

Stabilisce una origine eventi valida per la scrittura di messaggi di evento localizzati, usando le proprietà di configurazione specificate per l'origine eventi e il registro eventi corrispondente.

Spazio dei nomi:   System.Diagnostics
Assembly:  System (in System.dll)

public static void CreateEventSource(
	EventSourceCreationData sourceData
)

Parametri

sourceData
Type: System.Diagnostics.EventSourceCreationData

Proprietà di configurazione per l'origine eventi e il registro eventi di destinazione.

Exception Condition
ArgumentException

Il nome del computer specificato in sourceData non è valido.

-oppure-

Il nome di origine specificato in sourceData è null.

-oppure-

Il nome di log specificato in sourceData non è valido. Nomi dei log eventi deve essere costituito da caratteri stampabili e non può includere i caratteri ' * ','?', o ' \'.

-oppure-

Il nome di log specificato in sourceData non è valido per la creazione di log utente. I nomi di registro eventi AppEvent, SysEvent e SecEvent sono riservati per l'utilizzo nel sistema.

-oppure-

Il nome del log corrisponde a un nome di origine eventi esistente.

-oppure-

Il nome di origine specificato in sourceData risultati in un percorso della chiave del Registro di sistema più lungo di 254 caratteri.

-oppure-

I primi 8 caratteri del nome del log specificato in sourceData non sono univoci.

-oppure-

Il nome di origine specificato in sourceData è già registrato.

-oppure-

Il nome di origine specificato in sourceData corrisponde a un nome registro eventi esistente.

InvalidOperationException

Impossibile aprire la chiave del Registro di sistema per il registro eventi.

ArgumentNullException

sourceData è null.

Utilizzare questo overload per configurare una nuova origine per la scrittura di voci in un log eventi nel computer locale o un computer remoto. Non è necessario utilizzare questo metodo per leggere da un registro eventi.

Il CreateEventSource metodo utilizza l'input sourceDataSource, LogName e MachineName proprietà per creare i valori del Registro di sistema sul computer di destinazione per la nuova origine e il log eventi associato. Un nuovo nome di origine non può corrispondere un nome di origine esistente o un nome di log eventi esistenti nel computer di destinazione. Se il LogName non è impostata, l'origine è registrata per il registro eventi dell'applicazione. Se il MachineName non è impostata, l'origine è registrata nel computer locale.

System_CAPS_noteNota

Per creare un'origine evento in Windows Vista e versioni successive o Windows Server 2003, è necessario disporre dei privilegi di amministratore.

Il motivo per questo requisito è che tutti i registri eventi, inclusa la sicurezza, è necessario eseguire la ricerca per determinare se l'origine evento è univoco. A partire da Windows Vista, gli utenti si dispongano dell'autorizzazione per accedere al Registro di sicurezza. Pertanto, un SecurityException viene generata un'eccezione.

A partire da Windows Vista, controllo Account utente (UAC) determina i privilegi di un utente. Ai membri del gruppo Administrators predefinito vengono assegnati due token di accesso in fase di esecuzione, ovvero un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, viene assegnato il ruolo dell'utente standard. Per eseguire il codice che accede al Registro di protezione, è innanzitutto necessario elevare i privilegi da utente standard ad amministratore. È possibile farlo quando si avvia un'applicazione facendo clic con il pulsante destro del mouse sull'icona dell'applicazione e indicando l'opzione di esecuzione come amministratore.

Utilizzare WriteEvent e WriteEntry per scrivere eventi in un log eventi. È necessario specificare un'origine eventi per scrivere eventi; è necessario creare e configurare l'origine evento prima di scrivere la prima voce con l'origine.

Creare la nuova origine eventi durante l'installazione dell'applicazione. Questo consente di tempo per il sistema operativo aggiornare l'elenco delle origini eventi registrati e la relativa configurazione. Se il sistema operativo non è aggiornato l'elenco delle origini evento e si tenta di scrivere un evento con la nuova origine, che l'operazione di scrittura avrà esito negativo. È possibile configurare una nuova origine mediante un EventLogInstaller, o tramite il CreateEventSource metodo. È necessario disporre dei diritti amministrativi sul computer per creare una nuova origine evento.

È possibile creare un'origine evento per un log eventi esistente o un nuovo registro eventi. Quando si crea una nuova origine per un nuovo registro eventi, il sistema registra l'origine di tale log, ma il log non viene creato solo dopo avervi scritto la prima voce.

Il sistema operativo archivia i registri eventi come file. Quando si utilizza EventLogInstaller o CreateEventSource per creare un nuovo registro eventi, il file associato viene archiviato nella directory %SystemRoot%\System32\Config del computer specificato. Il nome del file viene impostato aggiungendo i primi 8 caratteri di Log proprietà con l'estensione "evt".

Ogni origine può scrivere solo in un solo log eventi alla volta. Tuttavia, l'applicazione può utilizzare più origini per scrivere più registri eventi. Ad esempio, l'applicazione potrebbe richiedere più origini configurate per diversi log eventi o file di risorse diversi.

È possibile registrare l'origine evento con file di risorse localizzate per le stringhe di categoria e messaggio di evento. L'applicazione può scrivere voci del registro eventi utilizzando gli identificatori di risorsa, anziché specificare la stringa effettiva. Il Visualizzatore eventi utilizza l'identificatore di risorsa per trovare e visualizzare la stringa corrispondente dal file di risorse localizzato in base alle impostazioni della lingua corrente. È possibile registrare un file separato per le categorie di eventi, messaggi e le stringhe di inserimento parametri oppure è possibile registrare lo stesso file di risorse per i tre tipi di stringhe. Utilizzare il CategoryCount, CategoryResourceFile, MessageResourceFile, e ParameterResourceFile proprietà per configurare l'origine per scrivere voci localizzate nel registro eventi. Se l'applicazione scrive valori stringa direttamente nel registro eventi, non è necessario impostare queste proprietà.

L'origine deve essere configurata per la scrittura di voci localizzate o per la scrittura di stringhe dirette. Se l'applicazione scrive voci tramite identificatori di risorsa e i valori stringa, è necessario registrare due origini separate. Ad esempio, configurare un'origine dei file di risorse e quindi utilizzare tale origine nel WriteEvent metodo per scrivere voci tramite identificatori di risorsa nel registro eventi. Quindi creare un'origine diversa senza file di risorse e utilizzarla nel WriteEntry metodo per scrivere stringhe direttamente nel log eventi.

Per modificare i dettagli di configurazione di un'origine esistente, è necessario eliminare l'origine e crearla di nuovo con la nuova configurazione. Se altre applicazioni o componenti di utilizzano l'origine esistente, creare una nuova origine con la configurazione aggiornata anziché eliminare l'origine esistente.

System_CAPS_noteNota

Se è stata configurata un'origine per un log eventi e la si riconfigura per un altro log eventi, è necessario riavviare il computer rendere effettive le modifiche.

Nell'esempio seguente si determina se l'origine eventi denominata SampleApplicationSource viene registrato nel computer locale. Se l'origine evento non esiste, l'esempio imposta il file di risorse del messaggio per l'origine e crea la nuova origine eventi. Infine, l'esempio imposta il nome visualizzato localizzato per il registro eventi, usando il valore dell'identificatore di risorsa in DisplayNameMsgId e il percorso del file di risorse in messageFile.

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);
    }
}

Nell'esempio viene utilizzato il seguente file di testo di messaggio, compilato nella libreria di risorse EventLogMsgs. Un file di testo del messaggio è l'origine da cui viene creato il file di risorse del messaggio. Il file di testo del messaggio definisce gli identificatori di risorsa e il testo per la categoria, messaggio di evento e le stringhe di inserimento di parametro. Identificatore di risorsa 5001 in particolare, viene definito per il nome localizzato del registro eventi.

; // 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
Disponibile da 2.0
Torna all'inizio
Mostra: