2012-03-12 42 views
0

我試圖寫它包含我的安裝程序中一個空白的文本文件,但我發現了以下錯誤;UnauthorizedAccessException

System.UnauthorizedAccessException: Access to the path 'C:\Program Files (x86)\Hex Technologies\wamplocation.txt' is denied. 

這似乎是該文件的權限,一旦它的通過我的安裝程序安裝,但我怎麼可以設置文件一旦安裝該文件是完全可修改?這可以通過C#完成嗎?!

EDITTED;

  wamp_url = openFileDialog1.FileName.ToString(); 
      String EnviromentPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
      StreamWriter outfile = new StreamWriter(EnviromentPath + @"\Hex Technologies\wamplocation.txt"); 
      outfile.Write(wamp_url); 
      outfile.Close(); 
+1

Window's 7 ?,如果是這樣,你應該寫入ProgramData而不是Program Files – 2012-03-12 23:52:35

回答

7

您不應將可修改數據文件存儲在Program Files路徑中。使用Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

Program Files \ ...路徑受到Win7 +上普通用戶的修改保護。試圖繞過這一保護措施是一個壞主意。

+0

謝謝,我收到了另一個錯誤,請參閱下面的註釋,你能幫忙嗎? – r0bb077 2012-03-13 00:25:35

2

的likleyhood是UAC是在您的方式獲得。

理想的情況下你的程序不應該被寫入到這個位置,它這個修改的文件是一個在安裝過程進行修改和其他地方,你需要確保你正在運行升高。

如果要在運行時修改此文件,則應考慮將%appdata%用於用戶數據或%programdata%用於程序數據而不是程序文件。

+0

謝謝,但現在我收到一個消息,指出「該文件正在由另一個進程使用」。我在上面插入了我的代碼,以顯示我的代碼的樣子! – r0bb077 2012-03-13 00:13:08

+0

應用程序數據中是否存在文件夾「Hex Technologies」? – 2012-03-13 00:25:31

+0

是的,我雙重檢查我送入StreamWriter的字符串,它的URL .txt文件相匹配。 – r0bb077 2012-03-13 00:30:34

相關問題