2010-03-04 10 views
5

Mon application génère une erreur d'accès non autorisé. Lors de l'exécution de mon application, j'essaie d'accéder à un répertoire à l'emplacement suivant: Application.UserAppDataPath.Question: Utilisation de Windows 7, Exception d'accès non autorisé lors de l'exécution de mon application

Le problème: Il dit que je n'ai pas l'autorisation d'accéder au répertoire Application.UserAppDataPath

Est-il possible de définir des autorisations dans mon code source de l'application?

Quelque chose comme:

Application.UserAppDataPath.SetPermissions() 
+2

S'il vous plaît nous montrer votre code; vous faites probablement une erreur. – SLaks

+1

Si vous n'êtes pas autorisé à * accéder * au chemin, il va de soi que vous n'aurez pas l'autorisation de * définir des permissions * sur le chemin ... mais vous devriez toujours avoir des permissions sur les données de l'application utilisateur. – Aaronaught

+0

Le code qui lève l'exception est le suivant: StreamReader sr = new StreamReader (Application.UserAppDataPath)); – RedEye

Répondre

12

En regardant votre commentaire, vous dites que c'est votre code :

StreamReader sr = new StreamReader(Application.UserAppDataPath); 

Application.UserAppDataPath est un répertoire , pas un fichier . Si vous essayez d'ouvrir cela directement, c'est la même chose que d'essayer d'ouvrir un fichier de niveau en dessous de le dossier AppData, que vous n'avez pas vraiment l'autorisation de faire.

Utilisez Path.Combine pour construire un chemin vers un fichier dans le dossier AppData, à savoir

string fileName = Path.Combine(Application.UserAppDataPath, "settings.xml"); 
StreamReader sr = new StreamReader(fileName); 

Bien sûr, cela est juste un exemple - en réalité, vous devriez probablement utiliser un sous-dossier à l'intérieur spécifique AppData à votre application.

+3

C'est probablement la cause, et celle que j'ai vu trop souvent. Vous ** certainement ** souhaitez créer un sous-répertoire sous AppData spécifique à votre application et l'utiliser. –

+0

Aaronaught vous êtes l'homme et Scott ... vous aussi mec – RedEye

2

Son probablement un problème UAC, essayez d'exécuter l'application comme un processus élevé, et voir si l'erreur persiste

+0

Merci. Comment puis-je l'exécuter en tant que processus élevé? Désolé, je suis un n00b. – RedEye

+1

@RedEye: Vous pouvez cliquer avec le bouton droit de la souris sur le raccourci de votre programme et choisir "Exécuter en tant qu'administrateur". –

+0

@sniperX - +1 - ju l'a obtenu. –