2013-05-31 54 views
1

我在VS 2010和C#中開發了一個小型Winform應用程序。並創建設置也。訪問程序文件時拒絕文件訪問

我已將應用程序配置文件放在應用程序文件夾路徑中以保存用戶憑據。安裝應用程序無法訪問配置文件,因爲我定的程序默認安裝路徑後如下:

[ProgramFilesFolder] [生產企業] [產品名稱]

所以我需要讓我的用戶憑據永久在其他地方。我需要讀取和寫入權限。另外我需要記錄應用程序異常。

+0

http://stackoverflow.com/questions/7288444/how-to-give-read-write-permissions-to-a-folder-during-installation-using-net – 2013-05-31 04:53:30

+0

搜索運行你的應用程序與管理員權限。 http://stackoverflow.com/questions/7666408/how-to-request-administrator-permissions-when-the-program-starts –

+1

@FurqanAshraf這幾乎從來都不是解決問題的正確方法。不需要*管理員權限的程序不應該要求它,最好是修復程序以執行所需的任何操作,而無需升級(如更改程序以保存在正確的位置)。如果你不得不提升它,*首選*仍然運行你的程序作爲一個較低的權限,[只有當你需要執行任務需要管理員權限時提升](http://stackoverflow.com/questions/573086/how -to-提升-特權只-時要求的?RQ = 1)。 –

回答

7

應該保存用戶數據的地方是在以下Environment.SpecialFolder位置之一

  • 的ApplicationData - 充當用於當前漫遊應用程序特定數據的公共儲存庫的目錄用戶。漫遊用戶在網絡上的多臺計算機上工作。漫遊用戶的配置文件保存在網絡上的服務器上,並在用戶登錄時加載到系統中。
  • LocalApplicationData - 作爲當前非漫遊用戶使用的應用程序特定數據的公共存儲庫的目錄。
  • CommonApplicationData - 作爲所有用戶使用的應用程序特定數據的公用存儲庫的目錄。

通過使用Enviorment.GetFolderPath

var savePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)), 
          "MyAppName"); 
//This should return the path %UserProfile%\Roaming\MyAppName\ 

對於程序日誌,我會用CommonApplicationData所以從幾個用戶的日誌都在一個位置收集得到的路徑。

+0

感謝您的回覆。我如何查看該日誌文件。我只記錄了一些txt,但我無法獲得savePath。 – Mask

+0

我現在得到了,我必須先創建該目錄。我使用了CommonApplicationData。 – Mask