Condividi tramite


EventLog.CreateEventSource Metodo

Definizione

Stabilisce un'applicazione in grado di scrivere informazioni sugli eventi in un determinato log del sistema.

Overload

CreateEventSource(EventSourceCreationData)

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

CreateEventSource(String, String)

Stabilisce il nome di origine specificato come origine evento valida per la scrittura di voci in un log nel computer locale. Questo metodo può anche creare un nuovo log personalizzato nel computer locale.

CreateEventSource(String, String, String)
Obsoleti.
Obsoleti.
Obsoleti.

Stabilisce il nome di origine specificato come origine evento valida per la scrittura di voci in un log nel computer specificato. Questo metodo può essere usato anche per creare un nuovo log personalizzato nel computer specificato.

CreateEventSource(EventSourceCreationData)

Origine:
EventLog.cs
Origine:
EventLog.cs
Origine:
EventLog.cs
Origine:
EventLog.cs

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

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)

Parametri

sourceData
EventSourceCreationData

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

Eccezioni

Il nome del computer specificato in sourceData non è valido.

-o-

Il nome di origine specificato in sourceData è null.

-o-

Il nome del log specificato in sourceData non è valido. I nomi dei log eventi devono essere costituiti da caratteri stampabili e non possono includere i caratteri '*', '?' o '\'.

-o-

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

-o-

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

-o-

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

-o-

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

-o-

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

-o-

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

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

sourceData è null.

Esempio

Nell'esempio seguente viene determinato se l'origine evento denominata SampleApplicationSource è registrata nel computer locale. Se l'origine evento non esiste, nell'esempio viene impostato il file di risorse del messaggio per l'origine e viene creata la nuova origine evento. Infine, nell'esempio viene impostato 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.

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

Nell'esempio viene usato il file di testo del messaggio seguente, integrato nella libreria di risorse EventLogMsgs.dll. 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, il messaggio di evento e le stringhe di inserimento dei parametri. In particolare, l'identificatore di risorsa 5001 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
.

Commenti

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

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

Nota

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

Il motivo di questo requisito è che tutti i registri eventi, inclusa la sicurezza, devono essere cercati per determinare se l'origine evento è univoca. A partire da Windows Vista, gli utenti non hanno l'autorizzazione per accedere al log di sicurezza; pertanto, viene generata una SecurityException.

A partire da Windows Vista, Controllo account utente determina i privilegi di un utente. Se si è membri del gruppo Administrators predefinito, vengono assegnati due token di accesso in fase di esecuzione: un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, si è nel ruolo utente standard. Per eseguire il codice che accede al log di sicurezza, è prima necessario elevare i privilegi dall'utente standard all'amministratore. A tale scopo, è possibile avviare un'applicazione facendo clic con il pulsante destro del mouse sull'icona dell'applicazione e indicando che si vuole eseguire come amministratore.

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

Creare la nuova origine evento durante l'installazione dell'applicazione. Ciò consente al sistema operativo di aggiornare l'elenco delle origini eventi registrate e la relativa configurazione. Se il sistema operativo non ha aggiornato l'elenco delle origini eventi e si tenta di scrivere un evento con la nuova origine, l'operazione di scrittura avrà esito negativo. È possibile configurare una nuova origine usando un EventLogInstalleroppure usando il metodo CreateEventSource. Per creare una nuova origine evento, è necessario disporre dei diritti amministrativi nel computer.

È possibile creare un'origine evento per un registro eventi esistente o un nuovo registro eventi. Quando si crea una nuova origine per un nuovo registro eventi, il sistema registra l'origine per tale log, ma il log non viene creato finché non viene scritta 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 nel computer specificato. Il nome del file viene impostato aggiungendo i primi 8 caratteri della proprietà Log con l'estensione del nome di file ".evt".

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

È possibile registrare l'origine evento con file di risorse localizzati per la categoria di eventi e le stringhe di messaggio. L'applicazione può scrivere voci del registro eventi usando identificatori di risorsa, invece di specificare la stringa effettiva. Il Visualizzatore eventi usa l'identificatore della risorsa per trovare e visualizzare la stringa corrispondente dal file di risorse localizzato in base alle impostazioni della lingua correnti. È possibile registrare un file separato per categorie di eventi, messaggi e stringhe di inserimento di parametri oppure è possibile registrare lo stesso file di risorse per tutti e tre i tipi di stringhe. Usare le proprietà CategoryCount, CategoryResourceFile, MessageResourceFilee ParameterResourceFile per configurare l'origine per scrivere voci localizzate nel registro eventi. Se l'applicazione scrive valori di stringhe 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 usando sia identificatori di risorsa che valori stringa, è necessario registrare due origini separate. Ad esempio, configurare un'origine con i file di risorse e quindi usare tale origine nel metodo WriteEvent per scrivere voci usando identificatori di risorsa nel registro eventi. Creare quindi un'origine diversa senza file di risorse e usare tale origine nel metodo WriteEntry per scrivere stringhe direttamente nel registro eventi usando tale origine.

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

Nota

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

Vedi anche

Si applica a

CreateEventSource(String, String)

Origine:
EventLog.cs
Origine:
EventLog.cs
Origine:
EventLog.cs
Origine:
EventLog.cs

Stabilisce il nome di origine specificato come origine evento valida per la scrittura di voci in un log nel computer locale. Questo metodo può anche creare un nuovo log personalizzato nel computer locale.

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)

Parametri

source
String

Nome di origine in base al quale l'applicazione viene registrata nel computer locale.

logName
String

Il nome del log in cui vengono scritte le voci dell'origine. I valori possibili includono Application, System o un registro eventi personalizzato.

Eccezioni

source è una stringa vuota ("") o null.

-o-

logName non è un nome di registro eventi valido. I nomi dei log eventi devono essere costituiti da caratteri stampabili e non possono includere i caratteri '*', '?' o '\'.

-o-

logName non è valido per la creazione del log utente. I nomi del registro eventi AppEvent, SysEvent e SecEvent sono riservati per l'uso del sistema.

-o-

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

-o-

Il nome di origine restituisce un percorso di chiave del Registro di sistema più lungo di 254 caratteri.

-o-

I primi 8 caratteri di logName corrispondono ai primi 8 caratteri di un nome del registro eventi esistente.

-o-

Impossibile registrare l'origine perché esiste già nel computer locale.

-o-

Il nome dell'origine corrisponde a un nome del registro eventi esistente.

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

Esempio

Nell'esempio seguente viene creato il MySource di origine, se non esiste già, e si scrive una voce nel registro eventi 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

Commenti

Utilizzare questo overload per creare un log personalizzato o per creare e registrare un Source in un log esistente nel computer locale.

Se logName è null o una stringa vuota ("") quando si chiama CreateEventSource, per impostazione predefinita il log viene impostato sul registro applicazioni. Se il log non esiste nel computer locale, il sistema crea un log personalizzato e registra l'applicazione come Source per tale log.

Nota

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

Il motivo di questo requisito è che tutti i registri eventi, inclusa la sicurezza, devono essere cercati per determinare se l'origine evento è univoca. A partire da Windows Vista, gli utenti non hanno l'autorizzazione per accedere al log di sicurezza; pertanto, viene generata una SecurityException.

In Windows Vista e versioni successive, Controllo account utente determina i privilegi di un utente. Se si è membri del gruppo Administrators predefinito, vengono assegnati due token di accesso in fase di esecuzione: un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, si è nel ruolo utente standard. Per eseguire il codice che accede al log di sicurezza, è prima necessario elevare i privilegi dall'utente standard all'amministratore. A tale scopo, è possibile avviare un'applicazione facendo clic con il pulsante destro del mouse sull'icona dell'applicazione e indicando che si vuole eseguire come amministratore.

È necessario creare un'origine evento solo se si scrive nel registro eventi. Prima di scrivere una voce in un registro eventi, è necessario registrare l'origine evento con il registro eventi come origine valida degli eventi. Quando si scrive una voce di log, il sistema usa il Source per trovare il log appropriato in cui inserire la voce. Se si legge il registro eventi, è possibile specificare il Sourceoppure un Log e MachineName.

Nota

Non è necessario specificare il MachineName se ci si connette a un log nel computer locale. Se non si specifica il MachineName durante la lettura da un log, viene utilizzato il computer locale (".").

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

Creare la nuova origine evento durante l'installazione dell'applicazione. Ciò consente al sistema operativo di aggiornare l'elenco delle origini eventi registrate e la relativa configurazione. Se il sistema operativo non ha aggiornato l'elenco delle origini eventi e si tenta di scrivere un evento con la nuova origine, l'operazione di scrittura avrà esito negativo. È possibile configurare una nuova origine usando un EventLogInstalleroppure usando il metodo CreateEventSource. Per creare una nuova origine evento, è necessario disporre dei diritti amministrativi nel computer.

È possibile creare un'origine evento per un registro eventi esistente o un nuovo registro eventi. Quando si crea una nuova origine per un nuovo registro eventi, il sistema registra l'origine per tale log, ma il log non viene creato finché non viene scritta 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 nel computer specificato. Il nome del file viene impostato aggiungendo i primi 8 caratteri della proprietà Log con l'estensione del nome di file ".evt".

L'origine deve essere univoca nel computer locale; un nuovo nome di origine non può corrispondere a un nome di origine esistente o a un nome del registro eventi esistente. Ogni origine può scrivere in un solo registro eventi alla volta; Tuttavia, l'applicazione può usare più origini per scrivere in più registri eventi. Ad esempio, l'applicazione potrebbe richiedere più origini configurate per registri eventi diversi o file di risorse diversi.

L'origine deve essere configurata per la scrittura di voci localizzate o per la scrittura di stringhe dirette. Se l'applicazione scrive voci usando sia identificatori di risorsa che valori stringa, è necessario registrare due origini separate. Ad esempio, configurare un'origine con i file di risorse e quindi usare tale origine nel metodo WriteEvent per scrivere voci usando identificatori di risorsa nel registro eventi. Creare quindi un'origine diversa senza file di risorse e usare tale origine nel metodo WriteEntry per scrivere stringhe direttamente nel registro eventi usando tale origine.

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

Nota

Se un'origine è già stata mappata a un log e ne viene eseguito il mapping a un nuovo log, è necessario riavviare il computer per rendere effettive le modifiche.

Vedi anche

Si applica a

CreateEventSource(String, String, String)

Origine:
EventLog.cs
Origine:
EventLog.cs
Origine:
EventLog.cs
Origine:
EventLog.cs

Attenzione

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

Attenzione

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

Attenzione

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

Stabilisce il nome di origine specificato come origine evento valida per la scrittura di voci in un log nel computer specificato. Questo metodo può essere usato anche per creare un nuovo log personalizzato nel computer specificato.

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)

Parametri

source
String

Origine in base alla quale l'applicazione viene registrata nel computer specificato.

logName
String

Il nome del log in cui vengono scritte le voci dell'origine. I valori possibili includono Application, System o un registro eventi personalizzato. Se non si specifica un valore, per impostazione predefinita logName application.

machineName
String

Nome del computer con cui registrare l'origine evento o "." per il computer locale.

Attributi

Eccezioni

Il machineName non è un nome computer valido.

-o-

source è una stringa vuota ("") o null.

-o-

logName non è un nome di registro eventi valido. I nomi dei log eventi devono essere costituiti da caratteri stampabili e non possono includere i caratteri '*', '?' o '\'.

-o-

logName non è valido per la creazione del log utente. I nomi del registro eventi AppEvent, SysEvent e SecEvent sono riservati per l'uso del sistema.

-o-

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

-o-

Il nome di origine restituisce un percorso di chiave del Registro di sistema più lungo di 254 caratteri.

-o-

I primi 8 caratteri di logName corrispondono ai primi 8 caratteri di un nome del registro eventi esistente nel computer specificato.

-o-

Impossibile registrare l'origine perché esiste già nel computer specificato.

-o-

Il nome dell'origine corrisponde a un nome di origine evento esistente.

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

Esempio

Nell'esempio seguente viene creato il MySource di origine nel computer MyServere viene scrissa una voce nel registro eventi 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

Commenti

Utilizzare questo overload per creare un log personalizzato o per creare e registrare un Source in un log esistente nel computer specificato.

Se logName è null o una stringa vuota ("") quando si chiama CreateEventSource, per impostazione predefinita il log viene impostato sul registro applicazioni. Se il log non esiste nel computer specificato, il sistema crea un log personalizzato e registra l'applicazione come Source per tale log.

È necessario creare un'origine evento solo se si scrive nel registro eventi. Prima di scrivere una voce in un registro eventi, è necessario registrare l'origine evento con il registro eventi come origine valida degli eventi. Quando si scrive una voce di log, il sistema usa il Source per trovare il log appropriato in cui inserire la voce. Se si legge il registro eventi, è possibile specificare il Sourceoppure un Log e MachineName.

Nota

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

Il motivo di questo requisito è che tutti i registri eventi, inclusa la sicurezza, devono essere cercati per determinare se l'origine evento è univoca. In Windows Vista e versioni successive, gli utenti non dispongono dell'autorizzazione per accedere al log di sicurezza; pertanto, viene generata una SecurityException.

In Windows Vista e versioni successive, Controllo account utente determina i privilegi di un utente. Se si è membri del gruppo Administrators predefinito, vengono assegnati due token di accesso in fase di esecuzione: un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, si è nel ruolo utente standard. Per eseguire il codice che accede al log di sicurezza, è prima necessario elevare i privilegi dall'utente standard all'amministratore. A tale scopo, è possibile avviare un'applicazione facendo clic con il pulsante destro del mouse sull'icona dell'applicazione e indicando che si vuole eseguire come amministratore.

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

Creare la nuova origine evento durante l'installazione dell'applicazione. Ciò consente al sistema operativo di aggiornare l'elenco delle origini eventi registrate e la relativa configurazione. Se il sistema operativo non ha aggiornato l'elenco delle origini eventi e si tenta di scrivere un evento con la nuova origine, l'operazione di scrittura avrà esito negativo. È possibile configurare una nuova origine usando un EventLogInstalleroppure usando il metodo CreateEventSource. Per creare una nuova origine evento, è necessario disporre dei diritti amministrativi nel computer.

È possibile creare un'origine evento per un registro eventi esistente o un nuovo registro eventi. Quando si crea una nuova origine per un nuovo registro eventi, il sistema registra l'origine per tale log, ma il log non viene creato finché non viene scritta 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 nel computer specificato. Il nome del file viene impostato aggiungendo i primi 8 caratteri della proprietà Log con l'estensione del nome di file ".evt".

L'origine deve essere univoca nel computer locale; un nuovo nome di origine non può corrispondere a un nome di origine esistente o a un nome del registro eventi esistente. Ogni origine può scrivere in un solo registro eventi alla volta; Tuttavia, l'applicazione può usare più origini per scrivere in più registri eventi. Ad esempio, l'applicazione potrebbe richiedere più origini configurate per registri eventi diversi o file di risorse diversi.

L'origine deve essere configurata per la scrittura di voci localizzate o per la scrittura di stringhe dirette. Se l'applicazione scrive voci usando sia identificatori di risorsa che valori stringa, è necessario registrare due origini separate. Ad esempio, configurare un'origine con i file di risorse e quindi usare tale origine nel metodo WriteEvent per scrivere voci usando identificatori di risorsa nel registro eventi. Creare quindi un'origine diversa senza file di risorse e usare tale origine nel metodo WriteEntry per scrivere stringhe direttamente nel registro eventi usando tale origine.

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

Nota

Se un'origine è già stata mappata a un log e ne viene eseguito il mapping a un nuovo log, è necessario riavviare il computer per rendere effettive le modifiche.

Vedi anche

Si applica a