简体   繁体   English

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

[英]C# Error creating directory in SpecialFolder.LocalApplicationData on Windows 7 as a non Admin

I'm getting the error "Access to the path 'LocalApplicationData\\MyProgram\\' is denied." 我收到错误“访问路径'LocalApplicationData \\ MyProgram \\'被拒绝。” 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 谢谢

LocalApplicationData is just an enum value. LocalApplicationData只是一个枚举值。 You will have to use it in combination with GetFolderPath : 您必须将它与GetFolderPath结合使用:

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

You're trying to access the enumeration value LocalApplicationData as if it were a string. 您正在尝试访问枚举值LocalApplicationData ,就好像它是一个字符串。 It's not. 不是。 You need to find the folder path with GetFolderPath : 您需要使用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: 顺便说一句,使用Path.Combine来构建路径,而不是手工完成,形式更好,更不容易出错:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 'SpecialFolder.LocalApplicationData'和'SpecialFolder.ApplicationData'之间的区别? - Difference between 'SpecialFolder.LocalApplicationData' and 'SpecialFolder.ApplicationData'? 使用C#设置Environment.SpecialFolder.LocalApplicationData - Set Environment.SpecialFolder.LocalApplicationData using C# “用户的应用程序数据文件夹”; 是否可以在SpecialFolder.ApplicationData和SpecialFolder.LocalApplicationData之间强制 - “User's Application Data Folder”; Is it possible to force between SpecialFolder.ApplicationData and SpecialFolder.LocalApplicationData 为什么我不能在 LocalApplicationData 中创建文件? C#,VS 2022,Windows 11 - Why can't I create a file in LocalApplicationData? C# , VS 2022, Windows 11 在C#中创建可移植(非安装)Windows应用程序 - Creating portable (non-installing) windows applications in C# 在C#中的Windows Service中为日志事件文件创建新目录 - Creating a new directory for log event file in windows service in c# 通过非英语操作系统上的SpecialFolder目录重复发生异常 - Exception recursing through SpecialFolder directory on non-english OS C# 创建管理员快捷方式 - C# Creating admin shortcut c#中的Environment.SpecialFolder.CommonStartMenu和Environment.SpecialFolder.StartMenu有什么区别? - What is the difference between Environment.SpecialFolder.CommonStartMenu and Environment.SpecialFolder.StartMenu in c#? 创建Windows窗体C# - Creating a Windows Form C#
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM