2012-11-25 42 views
0

我有一個錯誤說: 「訪問路徑 'C:\ Program Files文件(x86)的\我的程序\ BIN \調試\ myName.data' 被拒絕」UnauthorizeAccessException寫在C#中使用的TextWriter文件時

這是我的代碼

TextWriter tw = new StreamWriter("bin\\Debug\\myName.data"); 

tw.Write(txtLoginName.Text); 
tw.Close(); 

我有充分控制研究premission我的所有項目文件。我做的安裝程序,這樣客戶在自己的PC上安裝它,檢查文件時的時候,我發現沒有寫訪問premession給用戶。如何處理這個

=============

************** Exception Text ************** 
System.UnauthorizedAccessException: Access to the path 'C:\Program Files (x86)\My Program\bin\Debug\myName.data' is denied. 
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy) 
    at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) 
    at System.IO.StreamWriter.CreateFile(String path, Boolean append) 
    at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize) 
    at System.IO.StreamWriter..ctor(String path) 
    at clientChat.Form2.button1_Click(Object sender, EventArgs e) 
    at System.Windows.Forms.Control.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnClick(EventArgs e) 
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ButtonBase.WndProc(Message& m) 
    at System.Windows.Forms.Button.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
+0

這是一個新文件或現有文件?你能確認是否設置了只讀標誌嗎?另外,初始化textwriter時是否會出現此錯誤?或者當你寫作時? – ryadavilli

+0

當在Visual Studio中編譯它時,它確定沒有問題,因爲所有的權限授予用戶,但是當安裝程序,客戶端因爲文件沒有寫入權限而得到這個錯誤時, – dhyabi

+0

它的現有文件。這個文件給予完全控制,讀取,寫入 – dhyabi

回答

0

程序文件(在系統文件夾的其他位置)都不可寫普通用戶 - 由設計。

請使用文檔文件夾或其他每個用戶的位置來存儲用戶的數據。 Environment.GetFolderPath可讓您爲當前用戶獲取正確的位置,請考慮Environment.SpecialFolder適用於您的案例,並將其用作基礎文件夾。

Followng樣品會給路徑,在「我的文檔」文件夾:

var pathToFile = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.Personal), 
    "my_file_name.txt"); 
1

安裝程序將在用戶的登錄上下文中運行,以及系統的正常用戶沒有權限寫入到Program Files或其他這種系統文件夾。

您需要將文件夾的位置移動到用戶的應用程序數據文件夾。或者您的安裝程序創建的其他常見位置。