none
System.Diagnostics.EventLog sous Windows 7 RRS feed

  • Question

  • J'ai écrit en C# le bout de code suivant avec l'aide de la librairie System.Diagnostics:

        private void ErrorLog(string message, EventLogEntryType eventType)
        {
          try
          {
            EventLog.WriteEntry(System.Windows.Forms.Application.ProductName, message, eventType);
          }
          catch { };
        }

    Ce bout de code travaille bien sous Windows XP.  Mais sous Windows 7, je n'arrive pas à trouver le journal dans l'observateur d'évènements.

    Note:  L'instruction «catch» ne masque aucune erreur.  J'ai fait la validation.

    Avis?


    Luc Saucier




    mercredi 15 février 2012 20:26

Réponses

  • Bonjour,

    Tout à fait...

    La création d'une source d'événement (CreateEventSource) ne peut se faire qu'avec les droits administrateurs. Votre méthode WriteEntry appelle si nécessaire la méthode CreateEventSource(System.Windows.Forms.Application.ProductName) pour créer votre source d'événement si nécessaire (et dans ce cas, il faut avoir les droits administrateurs).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    jeudi 16 février 2012 23:30
    Modérateur
  • Ce bout de code fait des merveilles :)

        // Création d'une source dans l'observateur d'évènements Windows
        public static void CreateSource(string name)
        {
          try
          {
          if (!EventLog.SourceExists(name))
              EventLog.CreateEventSource(name, "Application");
          }
          catch (SecurityException)
          {
            MessageBox.Show("Rouler une fois " + name + " en mode administrateur pour créer une source dans le journal d'évènements Windows.", "Erreur critique", MessageBoxButtons.OK);
            Application.Exit();
          }
        }

    Merci encore pour l'aide!

    Luc Saucier

    mardi 21 février 2012 20:06

Toutes les réponses

  • Bonjour,

    Avez-vous crée précédemment la source de votre application avec les droits administrateurs ?

    La méthode WriteEntry nécessite des droits administrateurs la première fois sous Windows Vista/Seven si la source n'a jamais été crée.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mercredi 15 février 2012 22:35
    Modérateur
  • Bonjour,

    Pour la source de l'application, probablement pas puisque cette notion m'est inconnue.

    J'ai trouvé une lecture à l'adresse suivante avec vos interventions:

    http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/thread/40e55d10-7e02-46a8-9f5f-3077121fe765

    En résumé, je vois l'instruction suivante (en VB):

    System.Diagnostics.EventLog.CreateEventSource("Coach VB.NET", "Application")

    Est-ce que l'on parle de la même chose?


    Luc Saucier

    jeudi 16 février 2012 14:04
  • Bonjour,

    Tout à fait...

    La création d'une source d'événement (CreateEventSource) ne peut se faire qu'avec les droits administrateurs. Votre méthode WriteEntry appelle si nécessaire la méthode CreateEventSource(System.Windows.Forms.Application.ProductName) pour créer votre source d'événement si nécessaire (et dans ce cas, il faut avoir les droits administrateurs).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    jeudi 16 février 2012 23:30
    Modérateur
  • Ce bout de code fait des merveilles :)

        // Création d'une source dans l'observateur d'évènements Windows
        public static void CreateSource(string name)
        {
          try
          {
          if (!EventLog.SourceExists(name))
              EventLog.CreateEventSource(name, "Application");
          }
          catch (SecurityException)
          {
            MessageBox.Show("Rouler une fois " + name + " en mode administrateur pour créer une source dans le journal d'évènements Windows.", "Erreur critique", MessageBoxButtons.OK);
            Application.Exit();
          }
        }

    Merci encore pour l'aide!

    Luc Saucier

    mardi 21 février 2012 20:06