tags:

views:

576

answers:

2

Hi all,

I'm getting the error "Access to the path 'LocalApplicationData\MyProgram\' is denied." when trying to create a directory for my log file. This is when I'm running the program as a non-admin user.

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

Why would this be?

Thanks

+6  A: 

LocalApplicationData is just an enum value. You will have to use it in combination with GetFolderPath:

string folder = Path.Combine(Environment.GetFolderPath(
    Environment.SpecialFolder.LocalApplicationData), 
    "MyProgram");
0xA3
Many thanks divo
Jade M
+3  A: 

You're trying to access the enumeration value LocalApplicationData as if it were a string. It's not. You need to find the folder path with GetFolderPath:

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

Incidentally, it's better form, and less error-prone, to use Path.Combine to build up paths, rather than doing it by hand:

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

...and so your code would end up looking like:

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