EventLog.CreateEventSource Metodo

Definizione

Stabilisce che un'applicazione è in grado di scrivere le informazioni relative agli eventi in un registro specifico del sistema.

Overload

CreateEventSource(EventSourceCreationData)

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.

CreateEventSource(String, String)

Determina che il nome di origine specificato è un nome di eventi valido per la scrittura di voci in un log del computer locale. Questo metodo consente inoltre di creare un nuovo log personalizzato nel computer locale.

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

Determina che il nome di origine specificato è un nome di eventi valido per la scrittura di voci in un log del 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

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.

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 eventi e il registro eventi di destinazione.

Eccezioni

Il nome del computer specificato in sourceData non è valido.

-oppure-

Il nome di origine file specificato in sourceData è null.

-oppure-

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 '\'.

-oppure-

Il nome del log specificato in sourceData non è valido per la creazione di log utente. I nomi del log eventi AppEvent, SysEvent e SecEvent sono di uso riservato da parte del sistema.

-oppure-

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

-oppure-

A causa del nome origine specificato in sourceData il percorso di una chiave del Registro di sistema risulta più lungo di 254 caratteri.

-oppure-

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

-oppure-

Il nome origine specificato in sourceData è già registrato.

-oppure-

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

Non è possibile aprire la chiave del Registro di sistema per il log 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, 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.

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 CreateEventSource metodo usa le proprietà di input LogNamesourceDataSourcee 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 LogName proprietà non è impostata, l'origine viene registrata per il registro eventi dell'applicazione. Se l'oggetto 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 un'eccezione SecurityException .

A partire da Windows Vista, controllo dell'account utente 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 log di sicurezza, è necessario innanzitutto elevare i privilegi dall'utente standard all'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.

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.

Create la nuova origine evento durante l'installazione dell'applicazione. Ciò consente al sistema operativo di aggiornare l'elenco di 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 EventLogInstalleroggetto o usando il CreateEventSource metodo . 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 fino a quando non viene scritta la prima voce.

Il sistema operativo archivia i registri eventi come file. Quando si usa 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 Log proprietà 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 i 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, anziché specificare la stringa effettiva. Il Visualizzatore eventi usa l'identificatore di 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 CategoryCountproprietà , CategoryResourceFile, MessageResourceFilee ParameterResourceFile per configurare l'origine per scrivere voci localizzate nel registro eventi. Se l'applicazione scrive i valori delle 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 WriteEvent metodo per scrivere voci usando gli identificatori di risorsa nel registro eventi. Creare quindi un'origine diversa senza file di risorse e usare tale origine nel metodo per scrivere stringhe direttamente nel WriteEntry 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

Determina che il nome di origine specificato è un nome di eventi valido per la scrittura di voci in un log del computer locale. Questo metodo consente inoltre di 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 dell'origine con cui l'applicazione è registrata nel computer locale.

logName
String

Nome del log in cui le voci dell'origine vengono scritte. I valori possibili sono Applicazione, Sistema o un registro eventi personalizzato.

Eccezioni

source è una stringa ("") o null.

-oppure-

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

-oppure-

logName non è valido per la creazione di log utente. L'utilizzo dei nomi dei log eventi AppEvent, SysEvent e SecEvent è riservato al sistema.

-oppure-

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

-oppure-

A causa del nome origine una chiave del Registro di sistema risulta più lunga di 254 caratteri.

-oppure-

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

-oppure-

Non è possibile registrare l'origine poiché esiste già nel computer locale.

-oppure-

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

Non è possibile aprire la chiave del Registro di sistema per il log eventi sul computer locale.

Esempio

L'esempio seguente crea l'origine MySource , se non esiste già, e 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

Usare questo overload per creare un log personalizzato o per creare e registrare un Source oggetto a un log esistente nel computer locale.

Se logName è null o una stringa vuota ("") quando si chiama CreateEventSource, il log viene predefinito nel log dell'applicazione. Se il log non esiste nel computer locale, il sistema crea un log personalizzato e registra l'applicazione come oggetto 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 log 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 un'eccezione SecurityException .

In Windows Vista e versioni successive i privilegi di un utente sono determinati dalla funzionalità Controllo dell'account 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 log di sicurezza, è prima necessario elevare i privilegi dall'utente standard all'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.

È 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 eventi con il registro eventi come origine valida degli eventi. Quando si scrive una voce di log, il sistema usa per Source trovare il log appropriato in cui inserire la voce. Se si legge il registro eventi, è possibile specificare o Sourceun Log e MachineName.

Nota

Non è necessario specificare se MachineName si esegue la connessione a un accesso nel computer locale. Se non si specifica l'oggetto MachineName quando si legge da un log, si presuppone che il computer locale (".").

Usare WriteEvent e WriteEntry 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.

Create la nuova origine evento durante l'installazione dell'applicazione. Ciò consente al sistema operativo di aggiornare l'elenco di origini eventi registrate e la relativa configurazione. Se il sistema operativo non ha aggiornato il relativo elenco di 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 EventLogInstalleroggetto o usando il CreateEventSource metodo . È necessario disporre dei diritti amministrativi nel computer per creare una nuova origine evento.

È 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 usa 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 Log proprietà con l'estensione del nome 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 log eventi alla volta; Tuttavia, l'applicazione può usare più origini per scrivere in più log 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 con identificatori di risorsa e valori stringa, è necessario registrare due origini separate. Ad esempio, configurare un'origine WriteEvent con i file di risorse e quindi usare tale origine nel metodo 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 per scrivere stringhe direttamente nel WriteEntry 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 la si esegue il mapping a un nuovo log, è necessario riavviare il computer per l'effetto delle modifiche.

Vedi anche

Si applica a

CreateEventSource(String, String, String)

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

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

Attenzione

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

Determina che il nome di origine specificato è un nome di eventi valido per la scrittura di voci in un log del 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("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")]
public static void CreateEventSource (string source, string logName, string machineName);
[System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")]
public static void CreateEventSource (string source, string logName, string machineName);
public static void CreateEventSource (string source, string logName, string machineName);
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  http://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("This method has been deprecated.  Please use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.  https://go.microsoft.com/fwlink/?linkid=14202")>]
static member CreateEventSource : string * string * string -> unit
[<System.Obsolete("EventLog.CreateEventSource has been deprecated. Use System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) instead.")>]
static member CreateEventSource : string * string * string -> unit
static member CreateEventSource : string * string * string -> unit
Public Shared Sub CreateEventSource (source As String, logName As String, machineName As String)

Parametri

source
String

Origine con cui l'applicazione è registrata nel computer specificato.

logName
String

Nome del log in cui le voci dell'origine vengono scritte. I valori possibili sono Applicazione, Sistema o un registro eventi personalizzato. Se non si specifica alcun valore, il parametro, logName userà il log predefinito Applicazione.

machineName
String

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

Attributi

Eccezioni

machineName non è un nome del computer valido.

-oppure-

source è una stringa ("") o null.

-oppure-

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

-oppure-

logName non è valido per la creazione di log utente. L'utilizzo dei nomi dei log eventi AppEvent, SysEvent e SecEvent è riservato al sistema.

-oppure-

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

-oppure-

A causa del nome origine una chiave del Registro di sistema risulta più lunga di 254 caratteri.

-oppure-

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

-oppure-

Non è possibile registrare l'origine poiché esiste già nel computer specificato.

-oppure-

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

Non è possibile aprire la chiave del Registro di sistema per il log eventi sul computer specificato.

Esempio

L'esempio seguente crea l'origine MySource nel computer MyServere scrive una voce nel registro MyNewLogeventi .

#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

Usare questo overload per creare un log personalizzato o per creare e registrare un Source oggetto a un log esistente nel computer specificato.

Se logName è null o una stringa vuota ("") quando si chiama CreateEventSource, il log viene predefinito nel log dell'applicazione. Se il log non esiste nel computer specificato, il sistema crea un log personalizzato e registra l'applicazione come oggetto 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 eventi con il registro eventi come origine valida degli eventi. Quando si scrive una voce di log, il sistema usa per Source trovare il log appropriato in cui inserire la voce. Se si legge il registro eventi, è possibile specificare o Sourceun 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 log 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 un'eccezione SecurityException .

In Windows Vista e versioni successive i privilegi di un utente sono determinati dalla funzionalità Controllo dell'account 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 log di sicurezza, è prima necessario elevare i privilegi dall'utente standard all'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.

Usare WriteEvent e WriteEntry 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.

Create la nuova origine evento durante l'installazione dell'applicazione. Ciò consente al sistema operativo di aggiornare l'elenco di origini eventi registrate e la relativa configurazione. Se il sistema operativo non ha aggiornato il relativo elenco di 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 EventLogInstalleroggetto o usando il CreateEventSource metodo . È necessario disporre dei diritti amministrativi nel computer per creare una nuova origine evento.

È 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 usa 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 Log proprietà con l'estensione del nome 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 log eventi alla volta; Tuttavia, l'applicazione può usare più origini per scrivere in più log 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 con identificatori di risorsa e valori stringa, è necessario registrare due origini separate. Ad esempio, configurare un'origine WriteEvent con i file di risorse e quindi usare tale origine nel metodo 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 per scrivere stringhe direttamente nel WriteEntry 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 la si esegue il mapping a un nuovo log, è necessario riavviare il computer per l'effetto delle modifiche.

Vedi anche

Si applica a