簡體   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