c# - 我如何访问 C :\Program Files\in c#

标签 c# windows admin subdirectory unauthorizedaccessexcepti

我想以比桌面更通用的方式保存我的文件。 所以我想在程序文件夹中创建自己的子文件夹,我可以用它来保存我的东西。 但如果我尝试使用 File.AppendAllText(@"C:\Program Files\MySubfolder\MyFile.txt,someString); 创建文件,我会收到“System.UnauthorizedAccessException”

我什至手动禁用了文件夹保护。 我的应用程序尚未编译,因此我无法以管理员身份运行它,可以吗? 每个程序如何使用这个文件夹但我不能? 每次进行小更改并想要测试它时,我都需要编译我的应用程序吗?

我真的很感谢帮助,因为我现在坚持了好几个小时

最佳答案

尝试在程序文件中写入是一种非常糟糕的做法。此文件夹以及其他敏感文件夹受操作系统保护,以防止恶意代码隐藏在您的程序之间或防止不熟练的用户弄乱已安装的程序。

如果您想在磁盘上写入您的私有(private)内容,您可以使用这些文件夹

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

关于c# - 我如何访问 C :\Program Files\in c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66430190/

相关文章:

c# - 如何在 SimplSocket(Func<System.IO.Sockets.Socket> socketFunc) 中调用以下构造函数 Func<T>

c# - Hangfire .NET Core - 获取排队的作业列表

django - 使用 apache2 通过 https 运行 django admin

windows - 如何在 Windows 上运行多个 Perl 脚本而不打开单独的命令窗口?

c - 如何在使用 open() 时设置文件的共享模式

php - 从管理面板创建属性

django - 如何修复 Django 错误 : "' unicode' object has no attribute 'tzinfo' "on database read

c# - 创建一个 nuget 在 linux 和 windows 之间共享

c# - 如何正确更新 NHibernate 多对多与 Transient 对象的关系? transient 对象异常

windows - 是否可以使用不同的凭据读取/写入远程机器的注册表?