簡體   English   中英

如何使用此功能創建此目錄? 我不斷收到拒絕訪問錯誤。(C#)

[英]How do I create this directory using this function? I keep getting an access denied error.(C#)

首先,讓我先說我知道這似乎是一個常見問題,但相信我,我已經進行了廣泛的搜索,但找不到具體問題的答案。 如果你碰巧知道這個特定問題在哪里被問到,一定要把它標記為重復並在那里引用我,並接受我的歉意,因為它沒有找到它。

現在,我的代碼中有一個簡單的 if 函數:

 if (!Directory.Exists(FileDirectory))
 {
      Directory.CreateDirectory(FileDirectory);
 }

但是,在運行此 if 函數時,我收到此錯誤代碼:

System.UnauthorizedAccessException: '訪問路徑'C:\\Program Files\\LockingProgram\\Password.txt;' 被拒絕。'

現在,顯然問題是訪問被拒絕。 我將如何獲得訪問權限? 我試過簡單地立即寫入文件,但是它找不到路徑

File.WriteAllText(FileDirectory, Password);

拋出這個錯誤:

System.IO.DirectoryNotFoundException: '找不到路徑 'C:\\Program Files\\LockingProgram\\Password.txt;'

FileDirectory字符串是:

 string FileDirectory = "C:\\Program Files\\LockingProgram\\Password.txt;";

目前,程序試圖做的是在用戶單擊按鈕時從用戶那里獲取密碼,然后將該密碼保存到位於文件目錄的 txt 文件中以供將來參考。 當他們打開程序時,它會檢查文件是否存在。 如果它存在,它會設置該文件的密碼,如果它不存在,它會強制用戶在文本框中輸入一個字符串,然后從那里開始,我試圖保存它。 但是,這就是我遇到問題的地方。

任何幫助將不勝感激!

編輯:我現在明白將它保存到Program Files通常是一個壞主意,你應該改用AppData 我會嘗試一下,如果當時有效,我會更新你。

編輯 2:它現在可以工作了。 我將文件目錄更改為:

string FileDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "LockingApp";

我添加了一個新變量:

string FileName = "Password.txt";

我將目錄的創建位置修改為:

if (!Directory.Exists(FileDirectory))
{
     Directory.CreateDirectory(FileDirectory);
}

File.WriteAllText(Path.Combine(FileDirectory, FileName), Password);

謝謝你們的幫助! 希望我能很好地格式化這個問題。

C:\\Program Files\\LockingProgram\\Password.txt;

不是目錄,使用

FileDirectory = @"C:\Program Files\LockingProgram";

Directory.CreateDirectory(FileDirectory);

此外,您很有可能需要以提升的權限或適當的權限(即作為管理員)運行您的程序

然而,有更好的地方來存儲數據

如果我面向多個操作系統版本,我應該在哪里存儲我的數據和配置文件?

AppData ,例如

 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

您可以使用獨立存儲來保存文件(似乎是最簡單和最少使用的任務)。 檢查下面的代碼示例

using System;
using System.IO;
using System.IO.IsolatedStorage;

public class CreatingFilesDirectories
{
  public static void Main()
  {
    using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly, null, null))
    {
      isoStore.CreateDirectory("TopLevelDirectory");
      isoStore.CreateDirectory("TopLevelDirectory/SecondLevel");
      isoStore.CreateDirectory("AnotherTopLevelDirectory/InsideDirectory");
      Console.WriteLine("Created directories.");

      isoStore.CreateFile("InTheRoot.txt");
      Console.WriteLine("Created a new file in the root.");

      isoStore.CreateFile("AnotherTopLevelDirectory/InsideDirectory/HereIAm.txt");
      Console.WriteLine("Created a new file in the InsideDirectory.");
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM