C#在Windows 7上以非管理员身份在SpecialFolder.LocalApplicationData中创建目录时出错

我收到错误“拒绝访问路径’LocalApplicationData \ MyProgram \’。” 尝试为我的日志文件创建目录时。 这是我以非管理员用户身份运行程序的时候。

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

为什么会这样?

谢谢

LocalApplicationData只是一个枚举值。 您必须将它与GetFolderPath结合使用:

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

您正在尝试访问枚举值LocalApplicationData ,就好像它是一个字符串。 不是。 您需要使用GetFolderPath查找文件夹路径:

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

顺便说一下,使用Path.Combine来构建路径,而不是手工完成,forms更好,更不容易出错:

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

…所以你的代码最终看起来像:

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