2010-01-02 3 views
8

Ich erhalte den Fehler "Zugriff auf den Pfad 'LocalApplicationData \ MyProgram \' wird verweigert." Beim Versuch, ein Verzeichnis für meine Protokolldatei zu erstellen. Dies ist, wenn ich das Programm als Nicht-Admin-Benutzer ausführen.C# Fehler bei der Erstellung des Verzeichnisses in SpecialFolder.LocalApplicationData unter Windows 7 als Nicht-Administrator

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

Warum sollte das sein?

Dank

Antwort

22

LocalApplicationData ist nur ein ENUM-Wert. Sie haben es mit GetFolderPath in Kombination zu verwenden:

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

Vielen Dank divo –

11

Sie versuchen, den Aufzählungswert für den Zugriff auf LocalApplicationData, als ob es sich um eine Zeichenfolge waren. Es ist nicht. Sie müssen den Ordnerpfad mit GetFolderPath finden:

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

Im übrigen ist es besser, Form und weniger fehleranfällig, Path.Combine verwenden Pfade aufzubauen, anstatt sie von Hand zu tun:

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

... und so würde Ihr Code am Ende aussehen wie:

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