2009-08-04 5 views
0

Je gère l'événement Application.UnhandledException dans une application WinForms et j'ai besoin d'enregistrer les exceptions interceptées. Mon app.config est configuré pour consigner les exceptions dans un FileLog et un EventLog. Le problème est que lors de l'exécution en tant qu'utilisateur non administrateur, le journal des événements ne peut pas être écrit en raison d'une exception SecurityException - le message «La source n'a pas été trouvée, mais certains journaux d'événements n'ont pu être recherchés. "Problèmes de sécurité Écriture dans le journal des événements avec My.Application.Log.WriteException

Je comprends pourquoi - l'utilisateur n'a pas l'autorisation de créer la source EventLog, mais la question est de savoir comment cette source doit-elle être créée? Comme je le vois, je pourrais soit:

1) Créer la source EventLog avec mon installateur, car il fonctionne en tant qu'administrateur. Comment faire ça?

2) Créer à partir de mon application, en élevant en quelque sorte les autorisations? Mais cela donnerait l'invite UAC sur Vista.

Quelle est la meilleure pratique pour créer une source Windows Application EventLog sur une machine client?

grâce

Répondre

2

La façon la plus courante de le faire est votre option 1.

Comment vous faites cela dépend de votre package d'installation, mais vous devez:

  1. Assurez-vous vos courses d'installation avec permission élevée.
  2. Ecrivez une seule entrée à cette source de journal des événements, OU
  3. Créez la clé de Registre pour votre source d'événement directement

Lorsque votre installateur écrit dans le journal des événements, sera créé la source et sera disponible pour les non-administrateurs. Avec WiX (Windows Installer Xml), vous pouvez faire référence à this post pour créer directement l'entrée de registre de la source d'événements.

+0

Merci, cela devrait fonctionner très bien. Ont trouvé plus d'infos ici: http://msdn.microsoft.com/en-us/library/xz73e171%28VS.80%29.aspx –

Questions connexes