繁体   English   中英

我如何在 c# 中访问 C:\Program Files\

[英]How do i get access to C:\Program Files\ in c#

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

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

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

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

如果你想在你的磁盘上写你的私人资料,你可以使用这些文件夹

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

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM