Meilleur auteur de réponses
System.Diagnostics.EventLog sous Windows 7

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
- Modifié LucSaucierSILS mercredi 15 février 2012 20:40
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- Proposé comme réponse Ciprian Duduiala vendredi 17 février 2012 08:16
- Marqué comme réponse Ciprian Duduiala mardi 21 février 2012 08:06
-
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
- Marqué comme réponse Gilles TOURREAUModerator mardi 21 février 2012 21:58
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 -
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
-
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- Proposé comme réponse Ciprian Duduiala vendredi 17 février 2012 08:16
- Marqué comme réponse Ciprian Duduiala mardi 21 février 2012 08:06
-
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
- Marqué comme réponse Gilles TOURREAUModerator mardi 21 février 2012 21:58