EventSourceCreationData EventSourceCreationData EventSourceCreationData EventSourceCreationData Class

Definizione

Rappresenta le impostazioni di configurazione utilizzate per creare un'origine del log eventi sul computer locale o su un computer remoto.Represents the configuration settings used to create an event log source on the local computer or a remote computer.

public ref class EventSourceCreationData
public class EventSourceCreationData
type EventSourceCreationData = class
Public Class EventSourceCreationData
Ereditarietà
EventSourceCreationDataEventSourceCreationDataEventSourceCreationDataEventSourceCreationData

Esempi

Nell'esempio di codice seguente vengono impostate le proprietà di configurazione per un'origine evento dagli argomenti della riga di comando.The following code example sets the configuration properties for an event source from command-line arguments. Gli argomenti di input specificano il nome dell'origine evento, il nome del registro eventi, il nome del computer e il file di risorse del messaggio di evento.The input arguments specify the event source name, event log name, computer name, and event message resource file. Nell'esempio di codice viene verificato che l'origine non sia in conflitto con un'origine evento esistente, quindi viene creata la nuova origine evento per il registro eventi specificato.The code example verifies that the source does not conflict with an existing event source, and then creates the new event source for the specified event log.

#using <System.dll>

using namespace System;
using namespace System::Globalization;
using namespace System::Diagnostics;

[STAThread]
int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   
   EventSourceCreationData ^ mySourceData = gcnew EventSourceCreationData( "","" );
   bool registerSource = true;
   
   // Process input parameters.
   if ( args->Length > 1 )
   {
      
      // Require at least the source name.
      mySourceData->Source = args[ 1 ];
      if ( args->Length > 2 )
      {
         mySourceData->LogName = args[ 2 ];
      }

      if ( args->Length > 3 )
      {
         mySourceData->MachineName = args[ 3 ];
      }

      if ( (args->Length > 4) && (args[ 4 ]->Length > 0) )
      {
         mySourceData->MessageResourceFile = args[ 4 ];
      }
   }
   else
   {
      
      // Display a syntax help message.
      Console::WriteLine( "Input:" );
      Console::WriteLine( " source [event log] [machine name] [resource file]" );
      registerSource = false;
   }

   
   // Set defaults for parameters missing input.
   if ( mySourceData->MachineName->Length == 0 )
   {
      
      // Default to the local computer.
      mySourceData->MachineName = ".";
   }

   if ( mySourceData->LogName->Length == 0 )
   {
      
      // Default to the Application log.
      mySourceData->LogName = "Application";
   }

   
   // Determine if the source exists on the specified computer.
   if (  !EventLog::SourceExists( mySourceData->Source, mySourceData->MachineName ) )
   {
      
      // The source does not exist.  
      // Verify that the message file exists
      // and the event log is local.
      if ( (mySourceData->MessageResourceFile != nullptr) && (mySourceData->MessageResourceFile->Length > 0) )
      {
         if ( mySourceData->MachineName->Equals( "." ) )
         {
            if (  !System::IO::File::Exists( mySourceData->MessageResourceFile ) )
            {
               Console::WriteLine( "File {0} not found - message file not set for source.", mySourceData->MessageResourceFile );
               registerSource = false;
            }
         }
         else
         {
            
            // For simplicity, do not allow setting the message
            // file for a remote event log.  To set the message
            // for a remote event log, and for source registration,
            // the file path should be specified with system-wide
            // environment variables that are valid on the remote
            // computer, such as
            // "%SystemRoot%\system32\myresource.dll".
            Console::WriteLine( "Message resource file ignored for remote event log." );
            registerSource = false;
         }
      }
   }
   else
   {
      
      // Do not register the source, it already exists.
      registerSource = false;
      
      // Get the event log corresponding to the existing source.
      String^ sourceLog;
      sourceLog = EventLog::LogNameFromSourceName( mySourceData->Source, mySourceData->MachineName );
      
      // Determine if the event source is registered for the 
      // specified log.
      if ( sourceLog->ToUpper( CultureInfo::InvariantCulture ) != mySourceData->LogName->ToUpper( CultureInfo::InvariantCulture ) )
      {
         
         // An existing source is registered 
         // to write to a different event log.
         Console::WriteLine( "Warning: source {0} is already registered to write to event log {1}", mySourceData->Source, sourceLog );
      }
      else
      {
         
         // The source is already registered 
         // to write to the specified event log.
         Console::WriteLine( "Source {0} already registered to write to event log {1}", mySourceData->Source, sourceLog );
      }
   }

   if ( registerSource )
   {
      
      // Register the new event source for the specified event log.
      Console::WriteLine( "Registering new source {0} for event log {1}.", mySourceData->Source, mySourceData->LogName );
      EventLog::CreateEventSource( mySourceData );
      Console::WriteLine( "Event source was registered successfully!" );
   }
}

using System;
using System.Globalization;
using System.Diagnostics;

namespace EventLogSamples
{
    class CreateSourceSample
    {
        [STAThread]
        static void Main(string[] args)
        {
            EventSourceCreationData mySourceData = new EventSourceCreationData("", "");
            bool registerSource = true;

            // Process input parameters.
            if (args.Length > 0)
            {
                // Require at least the source name.

                mySourceData.Source = args[0];

                if (args.Length > 1)
                {
                    mySourceData.LogName = args[1];
                }

                if (args.Length > 2)
                {
                    mySourceData.MachineName = args[2];
                }
                if ((args.Length > 3) && (args[3].Length > 0))
                {
                    mySourceData.MessageResourceFile = args[3];
                }
            }
            else 
            {
                // Display a syntax help message.
                Console.WriteLine("Input:");
                Console.WriteLine(" source [event log] [machine name] [resource file]");

                registerSource = false;
            }

            // Set defaults for parameters missing input.
            if (mySourceData.MachineName.Length == 0)
            {
                // Default to the local computer.
                mySourceData.MachineName = ".";
            }
            if (mySourceData.LogName.Length == 0)
            {
                // Default to the Application log.
                mySourceData.LogName = "Application";
            }

            // Determine if the source exists on the specified computer.
            if (!EventLog.SourceExists(mySourceData.Source, 
                                       mySourceData.MachineName))
            {
                // The source does not exist.  

                // Verify that the message file exists
                // and the event log is local.

                if ((mySourceData.MessageResourceFile != null) &&
                    (mySourceData.MessageResourceFile.Length > 0))
                {
                    if (mySourceData.MachineName == ".") 
                    {
                        if (!System.IO.File.Exists(mySourceData.MessageResourceFile))
                        {
                            Console.WriteLine("File {0} not found - message file not set for source.",
                                mySourceData.MessageResourceFile);
                            registerSource = false;
                        }
                    }
                    else 
                    {
                        // For simplicity, do not allow setting the message
                        // file for a remote event log.  To set the message
                        // for a remote event log, and for source registration,
                        // the file path should be specified with system-wide
                        // environment variables that are valid on the remote
                        // computer, such as
                        // "%SystemRoot%\system32\myresource.dll".

                        Console.WriteLine("Message resource file ignored for remote event log.");
                        registerSource = false;
                    }
                }
            }
            else
            {
                // Do not register the source, it already exists.
                registerSource = false;

                // Get the event log corresponding to the existing source.
                string sourceLog;
                sourceLog = EventLog.LogNameFromSourceName(mySourceData.Source,
                                mySourceData.MachineName);

                // Determine if the event source is registered for the 
                // specified log.

                if (sourceLog.ToUpper(CultureInfo.InvariantCulture) != mySourceData.LogName.ToUpper(CultureInfo.InvariantCulture)) 
                {
                    // An existing source is registered 
                    // to write to a different event log.
                    Console.WriteLine("Warning: source {0} is already registered to write to event log {1}",
                        mySourceData.Source, sourceLog);
                }
                else 
                {
                    // The source is already registered 
                    // to write to the specified event log.

                    Console.WriteLine("Source {0} already registered to write to event log {1}",
                        mySourceData.Source, sourceLog);
                }
            }
        

            if (registerSource)
            {
                // Register the new event source for the specified event log.

                Console.WriteLine("Registering new source {0} for event log {1}.",
                    mySourceData.Source, mySourceData.LogName);
                EventLog.CreateEventSource(mySourceData);
                Console.WriteLine("Event source was registered successfully!");
            }
        }
    }
}
Imports System.Globalization
Imports System.Diagnostics

Namespace EventLogSamples
    Class CreateSourceSample

        Public Shared Sub Main(ByVal args() As String)
        
            Dim mySourceData As EventSourceCreationData = new EventSourceCreationData("", "")
            Dim registerSource As Boolean = True

            ' Process input parameters.
            If args.Length > 0
                ' Require at least the source name.

                mySourceData.Source = args(0)

                If args.Length > 1
   
                    mySourceData.LogName = args(1)
    
                End If
                If args.Length > 2
   
                    mySourceData.MachineName = args(2)
    
                End If
                If args.Length > 3 AndAlso args(3).Length > 0
   
                    mySourceData.MessageResourceFile = args(3)
    
                End If

            Else 
                ' Display a syntax help message.
                Console.WriteLine("Input:")
                Console.WriteLine(" source [event log] [machine name] [resource file]")

                registerSource = False
            End If

            ' Set defaults for parameters missing input.
            If mySourceData.MachineName.Length = 0
            
                ' Default to the local computer.
                mySourceData.MachineName = "."
            End If
            If mySourceData.LogName.Length = 0
                ' Default to the Application log.
                mySourceData.LogName = "Application"
            End If

            ' Determine if the source exists on the specified computer.
            If Not EventLog.SourceExists(mySourceData.Source, _
                                       mySourceData.MachineName)
                ' The source does not exist.  

                ' Verify that the message file exists
                ' and the event log is local.
                If mySourceData.MessageResourceFile <> Nothing AndAlso _
                   mySourceData.MessageResourceFile.Length > 0
                   
                    If mySourceData.MachineName = "."
                        If Not System.IO.File.Exists(mySourceData.MessageResourceFile)

                            Console.WriteLine("File {0} not found - message file not set for source.", _
                                mySourceData.MessageResourceFile)
                            registerSource = False
                        End If
                    Else
                        ' For simplicity, do not allow setting the message
                        ' file for a remote event log.  To set the message
                        ' for a remote event log, and for source registration,
                        ' the file path should be specified with system-wide
                        ' environment variables that are valid on the remote
                        ' computer, such as
                        ' "%SystemRoot%\system32\myresource.dll".

                        Console.WriteLine("Message resource file ignored for remote event log.")
                        registerSource = False

                    End If
                End If
            Else 
                ' Do not register the source, it already exists.
                registerSource = False

                ' Get the event log corresponding to the existing source.
                Dim sourceLog As string
                sourceLog = EventLog.LogNameFromSourceName(mySourceData.Source, _
                                mySourceData.MachineName)

                ' Determine if the event source is registered for the 
                ' specified log.

                If sourceLog.ToUpper(CultureInfo.InvariantCulture) <> mySourceData.LogName.ToUpper(CultureInfo.InvariantCulture)

                    ' An existing source is registered 
                    ' to write to a different event log.

                    Console.WriteLine("Warning: source {0} is already registered to write to event log {1}", _
                        mySourceData.Source, sourceLog)
                Else 
                    ' The source is already registered 
                    ' to write to the specified event log.

                    Console.WriteLine("Source {0} already registered to write to event log {1}", _
                        mySourceData.Source, sourceLog)

                End If
            End If

            If registerSource
                ' Register the new event source for the specified event log.

                Console.WriteLine("Registering new source {0} for event log {1}.", _
                    mySourceData.Source, mySourceData.LogName)
                EventLog.CreateEventSource(mySourceData)
                Console.WriteLine("Event source was registered successfully!")
            End If

        End Sub
    End Class 'CreateSourceSample
End Namespace 'EventLogSamples

Commenti

Utilizzare la EventSourceCreationData classe per configurare una nuova origine per la scrittura di voci localizzate in un log eventi.Use the EventSourceCreationData class to configure a new source for writing localized entries to an event log. Non è necessario usare questa classe per leggere da un log eventi.It is not necessary to use this class to read from an event log.

Questa classe definisce le impostazioni di configurazione per una nuova origine eventi e il registro eventi associato.This class defines the configuration settings for a new event source and its associated event log. Il registro eventi associato può trovarsi nel computer locale o in un computer remoto.The associated event log can be on the local computer or a remote computer. Per creare una nuova origine per un registro eventi nuovo o esistente nel computer locale LogName , impostare le proprietà e Source di un oggetto EventSourceCreationData e chiamare il EventLog.CreateEventSource(EventSourceCreationData) metodo.To create a new source for a new or existing event log on the local computer, set the LogName and Source properties of an EventSourceCreationData and call the EventLog.CreateEventSource(EventSourceCreationData) method. Questo metodo crea l'origine evento specificata nella Source proprietà e la registra per il registro eventi specificato in. LogNameThis method creates the event source you specify in the Source property and registers it for the event log specified in LogName. Questo comportamento è simile all'uso della EventLogInstaller classe per registrare un'origine evento per un log eventi.This behavior is similar to using the EventLogInstaller class to register an event source for an event log.

Usare i WriteEvent metodi WriteEntry e per scrivere eventi in un log eventi.Use the WriteEvent and WriteEntry methods to write events to an event log. È necessario specificare un'origine evento per la scrittura di eventi; è necessario creare e configurare l'origine evento prima di scrivere la prima voce con l'origine.You must specify an event source to write events; you must create and configure the event source before writing the first entry with the source.

Creare la nuova origine evento durante l'installazione dell'applicazione.Create the new event source during the installation of your application. Ciò consente al sistema operativo di aggiornare l'elenco delle origini eventi registrate e le relative configurazioni.This allows time for the operating system to refresh its list of registered event sources and their configurations. 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.If the operating system has not refreshed its list of event sources, and you attempt to write an event with the new source, the write operation will fail. È possibile configurare una nuova origine usando EventLogInstallero il CreateEventSource metodo.You can configure a new source using an EventLogInstaller, or using the CreateEventSource method. Per creare una nuova origine evento, è necessario disporre dei diritti amministrativi nel computer.You must have administrative rights on the computer to create a new event source.

È possibile creare un'origine evento per un registro eventi esistente o per un nuovo registro eventi.You can create an event source for an existing event log or a new event log. 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.When you create a new source for a new event log, the system registers the source for that log, but the log is not created until the first entry is written to it.

Ogni origine può scrivere in un solo log eventi alla volta. Tuttavia, l'applicazione può usare più origini per scrivere in più registri eventi.Each source can only write to one event log at a time; however, your application can use multiple sources to write to multiple event logs. Ad esempio, per l'applicazione potrebbero essere necessarie più origini configurate per i diversi registri eventi o per file di risorse diversi.For example, your application might need multiple sources configured for different event logs or different resource files.

Per modificare i dettagli di configurazione di un'origine esistente, è necessario eliminare l'origine e quindi crearla con la nuova configurazione.To change the configuration details of an existing source, you must delete the source and then create it with the new configuration. Se altre applicazioni o componenti usano l'origine esistente, creare una nuova origine con la configurazione aggiornata anziché eliminare l'origine esistente.If other applications or components use the existing source, create a new source with the updated configuration rather than deleting the existing source.

È possibile registrare l'origine eventi con le risorse localizzate per la categoria di eventi e le stringhe di messaggio.You can register the event source with localized resources for your event category and message strings. L'applicazione può scrivere voci del registro eventi usando gli identificatori di risorsa, anziché specificare la stringa effettiva.Your application can write event log entries using resource identifiers, rather than specifying the actual string. 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 corrente.The Event Viewer uses the resource identifier to find and display the corresponding string from the localized resource file based on current language settings. È possibile registrare un file separato per le categorie di eventi, i messaggi e le stringhe di inserimento dei parametri oppure è possibile registrare lo stesso file di risorse per tutti e tre i tipi di stringhe.You can register a separate file for event categories, messages, and parameter insertion strings, or you can register the same resource file for all three types of strings. Utilizzare le CategoryCountproprietà CategoryResourceFile, MessageResourceFile, eParameterResourceFile per configurare l'origine per la scrittura di voci localizzate nel registro eventi.Use the CategoryCount, CategoryResourceFile, MessageResourceFile, and ParameterResourceFile properties to configure the source to write localized entries to the event log. Se l'applicazione scrive valori stringa direttamente nel registro eventi, non è necessario impostare queste proprietà.If your application writes string values directly to the event log, you do not need to set these properties.

L'origine deve essere configurata per la scrittura di voci localizzate o per la scrittura di stringhe dirette.The source must be configured either for writing localized entries or for writing direct strings. Il WriteEntry metodo scrive la stringa specificata direttamente nel registro eventi e non utilizza un file di risorse del messaggio localizzabile.The WriteEntry method writes the given string directly to the event log; it does not use a localizable message resource file. Utilizzare il WriteEvent metodo per scrivere eventi utilizzando un file di risorse del messaggio localizzato.Use the WriteEvent method to write events using a localized message resource file.

Se l'applicazione scrive voci usando sia gli identificatori di risorsa che i valori di stringa, è necessario registrare due origini separate.If your application writes entries using both resource identifiers and string values, you must register two separate sources. Ad esempio, configurare un'origine con i file di risorse e quindi usare tale origine nel WriteEvent metodo per scrivere le voci usando gli identificatori di risorsa nel registro eventi.For example, configure one source with resource files, and then use that source in the WriteEvent method to write entries using resource identifiers to the event log. Creare quindi un'origine diversa senza file di risorse e usare tale origine nel WriteEntry metodo per scrivere le stringhe direttamente nel registro eventi usando tale origine.Then create a different source without resource files and use that source in the WriteEntry method to write strings directly to the event log using that source.

Costruttori

EventSourceCreationData(String, String) EventSourceCreationData(String, String) EventSourceCreationData(String, String) EventSourceCreationData(String, String)

Inizializza una nuova istanza della classe EventSourceCreationData con un'origine eventi e un nome di log eventi specificati.Initializes a new instance of the EventSourceCreationData class with a specified event source and event log name.

Proprietà

CategoryCount CategoryCount CategoryCount CategoryCount

Ottiene o imposta il numero di categorie nel file di risorse di categoria.Gets or sets the number of categories in the category resource file.

CategoryResourceFile CategoryResourceFile CategoryResourceFile CategoryResourceFile

Ottiene o imposta il percorso del file di risorse che contiene le stringhe di categoria per l'origine.Gets or sets the path of the resource file that contains category strings for the source.

LogName LogName LogName LogName

Ottiene o imposta il nome del log eventi nel quale l'origine scrive le voci.Gets or sets the name of the event log to which the source writes entries.

MachineName MachineName MachineName MachineName

Ottiene o imposta il nome del computer in cui registrare l'origine eventi.Gets or sets the name of the computer on which to register the event source.

MessageResourceFile MessageResourceFile MessageResourceFile MessageResourceFile

Ottiene o imposta il percorso del file di risorse del messaggio contenente le stringhe di formattazione del messaggio per l'origine.Gets or sets the path of the message resource file that contains message formatting strings for the source.

ParameterResourceFile ParameterResourceFile ParameterResourceFile ParameterResourceFile

Ottiene o imposta il percorso del file di risorse che contiene le stringhe dei parametri di messaggio per l'origine.Gets or sets the path of the resource file that contains message parameter strings for the source.

Source Source Source Source

Ottiene o imposta il nome da registrare con il log eventi come origine dell'evento.Gets or sets the name to register with the event log as an event source.

Metodi

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Sicurezza

SecurityPermission
per chiamare qualsiasi membro di EventSourceCreationData con attendibilità totale.for calling any member of EventSourceCreationData with full trust. Enumerazione associata:UnrestrictedAssociated enumeration: Unrestricted

Si applica a

Vedi anche