2011-07-01 3 views
2

J'ai récemment déménagé à Windows 7. Maintenant mon application .NET ne parvient pas à écrire fichier journal C: \UnauthorizedAccessException lors de l'écriture de fichier texte C: Windows 7

Mon TraceListener jette l'exception.

A first chance exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll 

Que faire? Je cours l'application du studio et ainsi je pense qu'il doit hériter tous mes droites et je suis l'admin sur mon PC.

Répondre

3

Si vous avez activé l'UAC, vous ne pourrez pas écrire de fichiers sur C:\, même si vous êtes administrateur, à moins que vous ne démarriez le programme en mode élevé pour activer les privilèges d'administrateur.

Les fichiers ne doivent pas vraiment être placés à la racine de C:, donc le mieux est de créer un sous-répertoire et de vous donner des droits d'accès (à votre compte, pas au groupe des administrateurs). Si vous voulez vraiment avoir le fichier sur C:\ et ne pas l'exécuter comme élevé, vous pouvez utiliser l'Explorateur Windows pour accorder vous-même (votre compte, pas le groupe administrateurs) un accès en écriture à C:\.

+0

Qu'est-ce que UAC? veuillez expliquer –

+1

UAC fonctionne en désactivant vos droits d'administrateur, jusqu'à ce que vous les activiez. C'est une mesure de sécurité pour empêcher les programmes malveillants de modifier les fichiers système sensibles. Les paramètres par défaut sur Windows 7 est d'avoir activé. Plus de détails: http://en.wikipedia.org/wiki/User_Account_Control –

+0

Si vous ne savez pas ce qu'est UAC, vous devriez peut-être en apprendre un peu plus sur la programmation. – alexandrudicu

0

Vous avez probablement encore activé le contrôle de compte d'utilisateur.

Vous devrez indiquer dans votre app.config que vous souhaitez que le processus utilise des droits élevés.

Le fichier app.config généré par défaut contient cette information.

+0

Oh, où est cette option dans la configuration? –

+0

pas dans l'app.config mais dans votre manifeste. Cependant l'exécution de l'application élevée juste pour que vous puissiez vous connecter à la racine de C est une surcharge –

2

Votre programme devra fonctionner avec les permissions requises. Seuls ceux disposant d'un accès administrateur peuvent écrire dans des dossiers «spéciaux» tels que le lecteur système. L'application devra donc être exécutée initialement avec des privilèges élevés.

Voir here et here pour plus d'informations sur les autorisations de sécurité dans le code.

+0

en corrigeant cela en exécutant une élévation est la mauvaise approche. La journalisation ailleurs est une meilleure solution. –

Questions connexes