如何解决我如何在 C# 中访问 C:\Program Files\
我想以比桌面更通用的方式保存我的文件。
所以我想在程序文件夹中创建我自己的子文件夹,我可以用它来保存我的东西。
但是如果我尝试使用 File.AppendAllText(@"C:\Program Files\MySubfolder\MyFile.txt,someString);
我什至手动禁用了文件夹保护。 我的应用程序尚未编译,所以我不能以管理员身份运行它,是吗? 每个程序如何使用这个文件夹,但我不能? 每次我做一个小改动并想测试它时,我都需要编译我的应用程序吗?
我真的很感激帮助,因为我现在坚持了几个小时
解决方法
尝试在程序文件中编写是一种非常糟糕的做法。此文件夹以及其他敏感文件夹均受操作系统保护,以防止恶意代码隐藏在您的程序之间或防止不熟练的用户干扰已安装的程序。
如果你想在你的磁盘上写你的私人内容,你可以使用这些文件夹
string folder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
string myFolder = Path.Combine(folder,"MyReservedPath");
Directory.CreateDirectory(myFolder); // if exists does nothing
string myFile = Path.Combine(myFolder,"MyPrivateData.txt");
File.WriteAllText(myFile,dataToWriteOnDisk);
CommonApplicationData 解析为 C:\programdata,此位置通常用于为任何使用它的用户存储您的程序所需的信息。
如果你想存储你的程序产生的一些数据,那么最好使用
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
还有很多其他地方可用,只需查看 Environment.SpecialFolder 枚举。
此代码将为您提供映射到系统中实际文件夹的所有内容的列表
foreach (Environment.SpecialFolder x in Enum.GetValues(typeof(Environment.SpecialFolder)))
Console.WriteLine($"{x} = {Environment.GetFolderPath(x)}");