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

Jad*_*e M 8 c# windows-7

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

Directory.CreateDirectory(System.Environment.SpecialFolder.LocalApplicationData + "\\MyProgram\\");
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

谢谢

Dir*_*mar 22

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

string folder = Path.Combine(Environment.GetFolderPath(
    Environment.SpecialFolder.LocalApplicationData), 
    "MyProgram");
Run Code Online (Sandbox Code Playgroud)


Mic*_*tta 11

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

string path = Environment.GetFolderPath(
    System.Environment.SpecialFolder.LocalApplicationData);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,使用Path.Combine构建路径而不是手工完成它的形式更好,更不容易出错:

string path = Path.Combine(@"C:\", "dir"); // gives you "C:\dir"
Run Code Online (Sandbox Code Playgroud)

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

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