Partage via


EventLog.CreateEventSource Méthode

Définition

Établit une application en mesure d’écrire des informations d’événement dans un journal particulier sur le système.

Surcharges

CreateEventSource(EventSourceCreationData)

Établit une source d’événement valide pour écrire des messages d’événements localisés, à l’aide des propriétés de configuration spécifiées pour la source d’événement et le journal des événements correspondants.

CreateEventSource(String, String)

Établit le nom de source spécifié comme source d’événement valide pour écrire des entrées dans un journal sur l’ordinateur local. Cette méthode peut également créer un journal personnalisé sur l’ordinateur local.

CreateEventSource(String, String, String)
Obsolète.
Obsolète.
Obsolète.

Établit le nom de source spécifié comme source d’événement valide pour l’écriture d’entrées dans un journal sur l’ordinateur spécifié. Cette méthode peut également être utilisée pour créer un journal personnalisé sur l’ordinateur spécifié.

CreateEventSource(EventSourceCreationData)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

Établit une source d’événement valide pour écrire des messages d’événements localisés, à l’aide des propriétés de configuration spécifiées pour la source d’événement et le journal des événements correspondants.

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)

Paramètres

sourceData
EventSourceCreationData

Propriétés de configuration de la source d’événement et de son journal des événements cible.

Exceptions

Le nom de l’ordinateur spécifié dans sourceData n’est pas valide.

-ou-

Le nom de la source spécifié dans sourceData est null.

-ou-

Le nom du journal spécifié dans sourceData n’est pas valide. Les noms du journal des événements doivent être composés de caractères imprimables et ne peuvent pas inclure les caractères « * », « ? » ou « \ ».

-ou-

Le nom du journal spécifié dans sourceData n’est pas valide pour la création du journal utilisateur. Les noms du journal des événements AppEvent, SysEvent et SecEvent sont réservés pour une utilisation système.

-ou-

Le nom du journal correspond à un nom de source d’événement existant.

-ou-

Le nom de la source spécifié dans sourceData entraîne un chemin d’accès de clé de Registre de plus de 254 caractères.

-ou-

Les 8 premiers caractères du nom du journal spécifié dans sourceData ne sont pas uniques.

-ou-

Le nom source spécifié dans sourceData est déjà inscrit.

-ou-

Le nom source spécifié dans sourceData correspond à un nom de journal des événements existant.

Impossible d’ouvrir la clé de Registre pour le journal des événements.

sourceData est null.

Exemples

L’exemple suivant détermine si la source d’événement nommée SampleApplicationSource est inscrite sur l’ordinateur local. Si la source d’événement n’existe pas, l’exemple définit le fichier de ressource de message pour la source et crée la source d’événement. Enfin, l’exemple définit le nom d’affichage localisé pour le journal des événements, à l’aide de la valeur d’identificateur de ressource dans DisplayNameMsgId et du chemin d’accès du fichier de ressources dans 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

L’exemple utilise le fichier texte de message suivant, intégré à la bibliothèque de ressources EventLogMsgs.dll. Un fichier texte de message est la source à partir de laquelle le fichier de ressource de message est créé. Le fichier texte du message définit les identificateurs de ressource et le texte de la catégorie, du message d’événement et des chaînes d’insertion de paramètre. Plus précisément, l’identificateur de ressource 5001 est défini pour le nom localisé du journal des événements.

; // 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  
.  

Remarques

Utilisez cette surcharge pour configurer une nouvelle source pour écrire des entrées dans un journal des événements sur l’ordinateur local ou un ordinateur distant. Il n’est pas nécessaire d’utiliser cette méthode pour lire à partir d’un journal des événements.

La méthode CreateEventSource utilise le sourceDataSourced’entrée, les propriétés LogName et MachineName pour créer des valeurs de Registre sur l’ordinateur cible pour la nouvelle source et son journal des événements associé. Un nouveau nom de source ne peut pas correspondre à un nom de source existant ou à un nom de journal des événements existant sur l’ordinateur cible. Si la propriété LogName n’est pas définie, la source est inscrite pour le journal des événements d’application. Si la MachineName n’est pas définie, la source est inscrite sur l’ordinateur local.

Note

Pour créer une source d’événement dans Windows Vista et version ultérieure ou Windows Server 2003, vous devez disposer de privilèges d’administrateur.

La raison de cette exigence est que tous les journaux d’événements, y compris la sécurité, doivent être recherchés pour déterminer si la source d’événement est unique. À compter de Windows Vista, les utilisateurs n’ont pas l’autorisation d’accéder au journal de sécurité ; par conséquent, une SecurityException est levée.

À compter de Windows Vista, le contrôle de compte d’utilisateur (UAC) détermine les privilèges d’un utilisateur. Si vous êtes membre du groupe Administrateurs intégrés, vous disposez de deux jetons d’accès au moment de l’exécution : un jeton d’accès utilisateur standard et un jeton d’accès administrateur. Par défaut, vous êtes dans le rôle d’utilisateur standard. Pour exécuter le code qui accède au journal de sécurité, vous devez d’abord élever vos privilèges de l’utilisateur standard à l’administrateur. Pour ce faire, lorsque vous démarrez une application, cliquez avec le bouton droit sur l’icône de l’application et indiquez que vous souhaitez exécuter en tant qu’administrateur.

Utilisez WriteEvent et WriteEntry pour écrire des événements dans un journal des événements. Vous devez spécifier une source d’événement pour écrire des événements ; vous devez créer et configurer la source d’événement avant d’écrire la première entrée avec la source.

Créez la source d’événement pendant l’installation de votre application. Cela permet au système d’exploitation d’actualiser sa liste de sources d’événements inscrites et de leur configuration. Si le système d’exploitation n’a pas actualisé sa liste de sources d’événements et que vous tentez d’écrire un événement avec la nouvelle source, l’opération d’écriture échoue. Vous pouvez configurer une nouvelle source à l’aide d’un EventLogInstallerou à l’aide de la méthode CreateEventSource. Vous devez disposer de droits d’administration sur l’ordinateur pour créer une source d’événement.

Vous pouvez créer une source d’événement pour un journal des événements existant ou un nouveau journal des événements. Lorsque vous créez une source pour un nouveau journal des événements, le système inscrit la source de ce journal, mais le journal n’est pas créé tant que la première entrée n’est pas écrite.

Le système d’exploitation stocke les journaux d’événements sous forme de fichiers. Lorsque vous utilisez EventLogInstaller ou CreateEventSource pour créer un journal des événements, le fichier associé est stocké dans le répertoire %SystemRoot%\System32\Config sur l’ordinateur spécifié. Le nom de fichier est défini en ajoutant les 8 premiers caractères de la propriété Log avec l’extension de nom de fichier .evt ».

Chaque source ne peut écrire qu’un seul journal des événements à la fois ; Toutefois, votre application peut utiliser plusieurs sources pour écrire dans plusieurs journaux d’événements. Par exemple, votre application peut nécessiter plusieurs sources configurées pour différents journaux d’événements ou différents fichiers de ressources.

Vous pouvez inscrire la source d’événement avec des fichiers de ressources localisés pour votre catégorie d’événements et les chaînes de message. Votre application peut écrire des entrées de journal des événements à l’aide d’identificateurs de ressources, plutôt que de spécifier la chaîne réelle. L’Observateur d’événements utilise l’identificateur de ressource pour rechercher et afficher la chaîne correspondante à partir du fichier de ressources localisé en fonction des paramètres de langue actuels. Vous pouvez inscrire un fichier distinct pour les catégories d’événements, les messages et les chaînes d’insertion de paramètres, ou vous pouvez inscrire le même fichier de ressources pour les trois types de chaînes. Utilisez les propriétés CategoryCount, CategoryResourceFile, MessageResourceFileet ParameterResourceFile pour configurer la source pour écrire des entrées localisées dans le journal des événements. Si votre application écrit des valeurs de chaînes directement dans le journal des événements, vous n’avez pas besoin de définir ces propriétés.

La source doit être configurée pour écrire des entrées localisées ou pour écrire des chaînes directes. Si votre application écrit des entrées à l’aide des identificateurs de ressource et des valeurs de chaîne, vous devez inscrire deux sources distinctes. Par exemple, configurez une source avec des fichiers de ressources, puis utilisez cette source dans la méthode WriteEvent pour écrire des entrées à l’aide d’identificateurs de ressource dans le journal des événements. Créez ensuite une autre source sans fichiers de ressources et utilisez cette source dans la méthode WriteEntry pour écrire des chaînes directement dans le journal des événements à l’aide de cette source.

Pour modifier les détails de configuration d’une source existante, vous devez supprimer la source, puis la créer avec la nouvelle configuration. Si d’autres applications ou composants utilisent la source existante, créez une nouvelle source avec la configuration mise à jour plutôt que de supprimer la source existante.

Note

Si une source est configurée pour un journal des événements et que vous la reconfigurez pour un autre journal des événements, vous devez redémarrer l’ordinateur pour que les modifications prennent effet.

Voir aussi

S’applique à

CreateEventSource(String, String)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

Établit le nom de source spécifié comme source d’événement valide pour écrire des entrées dans un journal sur l’ordinateur local. Cette méthode peut également créer un journal personnalisé sur l’ordinateur local.

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)

Paramètres

source
String

Nom source par lequel l’application est inscrite sur l’ordinateur local.

logName
String

Le nom du journal dans lequel les entrées de la source sont écrites. Les valeurs possibles incluent Application, Système ou un journal des événements personnalisé.

Exceptions

source est une chaîne vide («  ») ou null.

-ou-

logName n’est pas un nom de journal des événements valide. Les noms du journal des événements doivent être composés de caractères imprimables et ne peuvent pas inclure les caractères « * », « ? » ou « \ ».

-ou-

logName n’est pas valide pour la création du journal utilisateur. Les noms du journal des événements AppEvent, SysEvent et SecEvent sont réservés pour une utilisation système.

-ou-

Le nom du journal correspond à un nom de source d’événement existant.

-ou-

Le nom de la source génère un chemin de clé de Registre de plus de 254 caractères.

-ou-

Les 8 premiers caractères de logName correspondent aux 8 premiers caractères d’un nom de journal des événements existant.

-ou-

La source ne peut pas être inscrite, car elle existe déjà sur l’ordinateur local.

-ou-

Le nom de la source correspond à un nom de journal des événements existant.

Impossible d’ouvrir la clé de Registre du journal des événements sur l’ordinateur local.

Exemples

L’exemple suivant crée l'MySource source s’il n’existe pas déjà et écrit une entrée dans le journal des événements 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

Remarques

Utilisez cette surcharge pour créer un journal personnalisé ou pour créer et inscrire un Source dans un journal existant sur l’ordinateur local.

Si logName est null ou une chaîne vide («  ») lorsque vous appelez CreateEventSource, le journal est défini par défaut dans le journal des applications. Si le journal n’existe pas sur l’ordinateur local, le système crée un journal personnalisé et inscrit votre application en tant que Source pour ce journal.

Note

Pour créer une source d’événement dans Windows Vista et version ultérieure ou Windows Server 2003, vous devez disposer de privilèges d’administrateur.

La raison de cette exigence est que tous les journaux d’événements, y compris la sécurité, doivent être recherchés pour déterminer si la source d’événement est unique. À compter de Windows Vista, les utilisateurs n’ont pas l’autorisation d’accéder au journal de sécurité ; par conséquent, une SecurityException est levée.

Dans Windows Vista et versions ultérieures, le contrôle de compte d’utilisateur (UAC) détermine les privilèges d’un utilisateur. Si vous êtes membre du groupe Administrateurs intégrés, vous disposez de deux jetons d’accès au moment de l’exécution : un jeton d’accès utilisateur standard et un jeton d’accès administrateur. Par défaut, vous êtes dans le rôle d’utilisateur standard. Pour exécuter le code qui accède au journal de sécurité, vous devez d’abord élever vos privilèges de l’utilisateur standard à l’administrateur. Pour ce faire, lorsque vous démarrez une application, cliquez avec le bouton droit sur l’icône de l’application et indiquez que vous souhaitez exécuter en tant qu’administrateur.

Vous devez uniquement créer une source d’événement si vous écrivez dans le journal des événements. Avant d’écrire une entrée dans un journal des événements, vous devez inscrire la source d’événement auprès du journal des événements comme source valide d’événements. Lorsque vous écrivez une entrée de journal, le système utilise le Source pour trouver le journal approprié dans lequel placer votre entrée. Si vous lisez le journal des événements, vous pouvez spécifier le Source, ou un Log et MachineName.

Note

Vous n’êtes pas obligé de spécifier le MachineName si vous vous connectez à un journal sur l’ordinateur local. Si vous ne spécifiez pas l'MachineName lors de la lecture à partir d’un journal, l’ordinateur local (« . ») est supposé.

Utilisez WriteEvent et WriteEntry pour écrire des événements dans un journal des événements. Vous devez spécifier une source d’événement pour écrire des événements ; vous devez créer et configurer la source d’événement avant d’écrire la première entrée avec la source.

Créez la source d’événement pendant l’installation de votre application. Cela permet au système d’exploitation d’actualiser sa liste de sources d’événements inscrites et de leur configuration. Si le système d’exploitation n’a pas actualisé sa liste de sources d’événements et que vous tentez d’écrire un événement avec la nouvelle source, l’opération d’écriture échoue. Vous pouvez configurer une nouvelle source à l’aide d’un EventLogInstallerou à l’aide de la méthode CreateEventSource. Vous devez disposer de droits d’administration sur l’ordinateur pour créer une source d’événement.

Vous pouvez créer une source d’événement pour un journal des événements existant ou un nouveau journal des événements. Lorsque vous créez une source pour un nouveau journal des événements, le système inscrit la source de ce journal, mais le journal n’est pas créé tant que la première entrée n’est pas écrite.

Le système d’exploitation stocke les journaux d’événements sous forme de fichiers. Lorsque vous utilisez EventLogInstaller ou CreateEventSource pour créer un journal des événements, le fichier associé est stocké dans le répertoire %SystemRoot%\System32\Config sur l’ordinateur spécifié. Le nom de fichier est défini en ajoutant les 8 premiers caractères de la propriété Log avec l’extension de nom de fichier .evt ».

La source doit être unique sur l’ordinateur local ; Un nouveau nom source ne peut pas correspondre à un nom source existant ou à un nom de journal des événements existant. Chaque source peut écrire dans un seul journal des événements à la fois ; Toutefois, votre application peut utiliser plusieurs sources pour écrire dans plusieurs journaux d’événements. Par exemple, votre application peut nécessiter plusieurs sources configurées pour différents journaux d’événements ou différents fichiers de ressources.

La source doit être configurée pour écrire des entrées localisées ou pour écrire des chaînes directes. Si votre application écrit des entrées à l’aide des identificateurs de ressource et des valeurs de chaîne, vous devez inscrire deux sources distinctes. Par exemple, configurez une source avec des fichiers de ressources, puis utilisez cette source dans la méthode WriteEvent pour écrire des entrées à l’aide d’identificateurs de ressource dans le journal des événements. Créez ensuite une autre source sans fichiers de ressources et utilisez cette source dans la méthode WriteEntry pour écrire des chaînes directement dans le journal des événements à l’aide de cette source.

Pour modifier les détails de configuration d’une source existante, vous devez supprimer la source, puis la créer avec la nouvelle configuration. Si d’autres applications ou composants utilisent la source existante, créez une nouvelle source avec la configuration mise à jour plutôt que de supprimer la source existante.

Note

Si une source a déjà été mappée à un journal et que vous la remappagez sur un nouveau journal, vous devez redémarrer l’ordinateur pour que les modifications prennent effet.

Voir aussi

S’applique à

CreateEventSource(String, String, String)

Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs
Source:
EventLog.cs

Attention

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

Attention

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

Attention

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

Établit le nom de source spécifié comme source d’événement valide pour l’écriture d’entrées dans un journal sur l’ordinateur spécifié. Cette méthode peut également être utilisée pour créer un journal personnalisé sur l’ordinateur spécifié.

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)

Paramètres

source
String

Source par laquelle l’application est inscrite sur l’ordinateur spécifié.

logName
String

Le nom du journal dans lequel les entrées de la source sont écrites. Les valeurs possibles incluent Application, Système ou un journal des événements personnalisé. Si vous ne spécifiez pas de valeur, logName valeurs par défaut pour Application.

machineName
String

Nom de l’ordinateur avec lequel inscrire cette source d’événement, ou « ».

Attributs

Exceptions

Le machineName n’est pas un nom d’ordinateur valide.

-ou-

source est une chaîne vide («  ») ou null.

-ou-

logName n’est pas un nom de journal des événements valide. Les noms du journal des événements doivent être composés de caractères imprimables et ne peuvent pas inclure les caractères « * », « ? » ou « \ ».

-ou-

logName n’est pas valide pour la création du journal utilisateur. Les noms du journal des événements AppEvent, SysEvent et SecEvent sont réservés pour une utilisation système.

-ou-

Le nom du journal correspond à un nom de source d’événement existant.

-ou-

Le nom de la source génère un chemin de clé de Registre de plus de 254 caractères.

-ou-

Les 8 premiers caractères de logName correspondent aux 8 premiers caractères d’un nom de journal des événements existant sur l’ordinateur spécifié.

-ou-

La source ne peut pas être inscrite, car elle existe déjà sur l’ordinateur spécifié.

-ou-

Le nom de la source correspond à un nom de source d’événement existant.

La clé de Registre du journal des événements n’a pas pu être ouverte sur l’ordinateur spécifié.

Exemples

L’exemple suivant crée le MySource source sur l’ordinateur MyServeret écrit une entrée dans le journal des événements 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

Remarques

Utilisez cette surcharge pour créer un journal personnalisé ou pour créer et inscrire un Source dans un journal existant sur l’ordinateur spécifié.

Si logName est null ou une chaîne vide («  ») lorsque vous appelez CreateEventSource, le journal est défini par défaut dans le journal des applications. Si le journal n’existe pas sur l’ordinateur spécifié, le système crée un journal personnalisé et inscrit votre application en tant que Source pour ce journal.

Vous devez uniquement créer une source d’événement si vous écrivez dans le journal des événements. Avant d’écrire une entrée dans un journal des événements, vous devez inscrire la source d’événement auprès du journal des événements comme source valide d’événements. Lorsque vous écrivez une entrée de journal, le système utilise le Source pour trouver le journal approprié dans lequel placer votre entrée. Si vous lisez le journal des événements, vous pouvez spécifier le Source, ou un Log et MachineName.

Note

Pour créer une source d’événement dans Windows Vista et version ultérieure ou Windows Server 2003, vous devez disposer de privilèges d’administrateur.

La raison de cette exigence est que tous les journaux d’événements, y compris la sécurité, doivent être recherchés pour déterminer si la source d’événement est unique. Dans Windows Vista et versions ultérieures, les utilisateurs n’ont pas l’autorisation d’accéder au journal de sécurité ; par conséquent, une SecurityException est levée.

Dans Windows Vista et versions ultérieures, le contrôle de compte d’utilisateur (UAC) détermine les privilèges d’un utilisateur. Si vous êtes membre du groupe Administrateurs intégrés, vous disposez de deux jetons d’accès au moment de l’exécution : un jeton d’accès utilisateur standard et un jeton d’accès administrateur. Par défaut, vous êtes dans le rôle d’utilisateur standard. Pour exécuter le code qui accède au journal de sécurité, vous devez d’abord élever vos privilèges de l’utilisateur standard à l’administrateur. Pour ce faire, lorsque vous démarrez une application, cliquez avec le bouton droit sur l’icône de l’application et indiquez que vous souhaitez exécuter en tant qu’administrateur.

Utilisez WriteEvent et WriteEntry pour écrire des événements dans un journal des événements. Vous devez spécifier une source d’événement pour écrire des événements ; vous devez créer et configurer la source d’événement avant d’écrire la première entrée avec la source.

Créez la source d’événement pendant l’installation de votre application. Cela permet au système d’exploitation d’actualiser sa liste de sources d’événements inscrites et de leur configuration. Si le système d’exploitation n’a pas actualisé sa liste de sources d’événements et que vous tentez d’écrire un événement avec la nouvelle source, l’opération d’écriture échoue. Vous pouvez configurer une nouvelle source à l’aide d’un EventLogInstallerou à l’aide de la méthode CreateEventSource. Vous devez disposer de droits d’administration sur l’ordinateur pour créer une source d’événement.

Vous pouvez créer une source d’événement pour un journal des événements existant ou un nouveau journal des événements. Lorsque vous créez une source pour un nouveau journal des événements, le système inscrit la source de ce journal, mais le journal n’est pas créé tant que la première entrée n’est pas écrite.

Le système d’exploitation stocke les journaux d’événements sous forme de fichiers. Lorsque vous utilisez EventLogInstaller ou CreateEventSource pour créer un journal des événements, le fichier associé est stocké dans le répertoire %SystemRoot%\System32\Config sur l’ordinateur spécifié. Le nom de fichier est défini en ajoutant les 8 premiers caractères de la propriété Log avec l’extension de nom de fichier .evt ».

La source doit être unique sur l’ordinateur local ; Un nouveau nom source ne peut pas correspondre à un nom source existant ou à un nom de journal des événements existant. Chaque source peut écrire dans un seul journal des événements à la fois ; Toutefois, votre application peut utiliser plusieurs sources pour écrire dans plusieurs journaux d’événements. Par exemple, votre application peut nécessiter plusieurs sources configurées pour différents journaux d’événements ou différents fichiers de ressources.

La source doit être configurée pour écrire des entrées localisées ou pour écrire des chaînes directes. Si votre application écrit des entrées à l’aide des identificateurs de ressource et des valeurs de chaîne, vous devez inscrire deux sources distinctes. Par exemple, configurez une source avec des fichiers de ressources, puis utilisez cette source dans la méthode WriteEvent pour écrire des entrées à l’aide d’identificateurs de ressource dans le journal des événements. Créez ensuite une autre source sans fichiers de ressources et utilisez cette source dans la méthode WriteEntry pour écrire des chaînes directement dans le journal des événements à l’aide de cette source.

Pour modifier les détails de configuration d’une source existante, vous devez supprimer la source, puis la créer avec la nouvelle configuration. Si d’autres applications ou composants utilisent la source existante, créez une nouvelle source avec la configuration mise à jour plutôt que de supprimer la source existante.

Note

Si une source a déjà été mappée à un journal et que vous la remappagez sur un nouveau journal, vous devez redémarrer l’ordinateur pour que les modifications prennent effet.

Voir aussi

S’applique à