2014-04-01 84 views
0

我正在使用C#編寫一個程序,其中的一部分是在Application.StartupPath文件夾中創建一個目錄,然後使用System.IO.File.WriteAllText()在其中編寫一個文本文件。我的問題是我的程序崩潰,拋出一個UnauthorizedAccessException並告訴我「訪問路徑被拒絕」,這很奇怪,考慮到它崩潰而不管我運行程序的目錄是否是從我的雲文件夾,桌面,我的文檔等運行,甚至儘管在任何這些目錄中以管理員身份運行。例外:「訪問路徑...被拒絕」

我正在調試它的路徑是C:\Users\Jeff\Google Drive\Documents\Visual Studio 2013\Projects\Palobo\Palobo\bin\Debug。這是using System.IO;,我正在使用的代碼包括:

Directory.CreateDirectory(Application.StartupPath); 
File.WriteAllText(Application.StartupPath, "Password=" + x); 

其中x是由用戶輸入的一些字符串數據。

我得到的錯誤是:

訪問路徑「C:\用戶\傑夫\谷歌驅動器\ Documents \ Visual Studio的2013 \項目\ Palobo \ mzdon29被拒絕。

(mzdon29是jwalk96的加密結果)。

有沒有人有任何想法,爲什麼我遇到這個問題?謝謝!

+0

你運行的exe外部或者你attemping通過在你的IDE調試器來運行呢? –

+0

兩者,無論哪種方式,我得到相同的結果。 – Jeff

+0

你能告訴我們錯誤發生的地方嗎? –

回答

3

Application.StartupPath是一個文件夾(您的應用程序從哪裏啓動)。嘗試指定文件夾內的一個確切的文件名:

File.WriteAllText(Application.StartupPath + "\\MyFile.txt", "Password=" + x); 
+0

啊,我明白我做了什麼。謝謝@Joel Coehoorn和@nXu! – Jeff

3

讓我們來看看下面的代碼:

Directory.CreateDirectory(Application.StartupPath); 
File.WriteAllText(Application.StartupPath, "Password=" + x); 

你想創建一個已經存在的目錄,然後你想使用目錄作爲文件名!您需要在路徑末尾添加一些內容,以便您使用新的文件夾和文件。

此外,使用StartupPath爲此首先是糟糕的做法。您可以創建一個快捷方式,將啓動路徑設置爲任意位置。但是,具體而言,默認的StartupPath位於Program Files文件夾下的某個位置很常見。此文件夾下的項目默認爲只讀標準用戶。相反,你應該看看使用Application Data文件夾,例如:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)