2010-01-02 4 views
8

Je reçois l'erreur "L'accès au chemin 'LocalApplicationData \ MyProgram \' est refusé." lorsque vous essayez de créer un répertoire pour mon fichier journal. C'est quand je cours le programme en tant qu'utilisateur non-admin.C# Erreur lors de la création du répertoire dans SpecialFolder.LocalApplicationData sous Windows 7 en tant que non administrateur

Directory.CreateDirectory(System.Environment.SpecialFolder.LocalApplicationData + "\\MyProgram\\"); 

Pourquoi cela serait-il?

Merci

Répondre

22

LocalApplicationData est juste une valeur ENUM. Vous devrez l'utiliser en combinaison avec GetFolderPath:

string folder = Path.Combine(Environment.GetFolderPath(
    Environment.SpecialFolder.LocalApplicationData), 
    "MyProgram"); 
+1

Merci beaucoup –

11

Vous essayez d'accéder à la valeur d'énumération LocalApplicationData comme si elle était une chaîne. Ce n'est pas. Vous devez trouver le chemin du dossier avec GetFolderPath:

string path = Environment.GetFolderPath(
    System.Environment.SpecialFolder.LocalApplicationData); 

Soit dit en passant, il est meilleure forme et moins, utiliser sujette aux erreurs Path.Combine pour construire des chemins, plutôt que de le faire à la main:

string path = Path.Combine(@"C:\", "dir"); // gives you "C:\dir" 

... et ainsi votre code finirait par ressembler à:

string appDataPath = Environment.GetFolderPath 
    (System.Environment.SpecialFolder.LocalApplicationData); 
string path = Path.Combine(appDataPath, "MyProgram"); 
Directory.CreateDirectory(path); 
Questions connexes