EventLog.CreateEventSource Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 sourceData
Source, 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 MyServer
e 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.