我想用比桌面更通用的方式保存我的文件。所以我想在程序文件夹中创建我自己的子文件夹,我可以用它来保存我的东西。但是我得到了"System.UnauthorizedAccessException"如果我尝试使用File.AppendAllText(@"C:Program FilesMySubfolderMyFile.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);
还有很多其他的地方,看看环境就知道了。SpecialFolder enum。
这段代码将给你一个映射到系统中实际文件夹的所有内容的列表
foreach (Environment.SpecialFolder x in Enum.GetValues(typeof(Environment.SpecialFolder)))
Console.WriteLine($"{x} = {Environment.GetFolderPath(x)}");