2012-09-04 19 views
5

我嘗試使用我的app.config中的自定義配置節以下問題。我使用自定義配置節來跟蹤一個選擇的文件夾,我想用我的程序來備份像這樣的:保存自定義配置節結果在System.UnauthorizedAccessException

<CustomConfigSection> 
    <BackupLocations> 
     <clear /> 
     <add path="C:\Users\Marcel\Documents\" /> 
    </BackupLocations> 
</CustomConfigSection> 

現在,每當我保存配置文件,我得到這個異常:

System.Configuration.ConfigurationErrorsException:發生錯誤 加載配置文件:訪問路徑C:\ Program Files (x86)\ Backup Solutions \ uqhuxi1j.tmp被拒絕。 (C:\ Program Files文件(x86)的\備份方案\ BS.exe.Config)---> System.UnauthorizedAccessException的

我使用的代碼是:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
CustomConfigSection section = (CustomConfigSection)config.GetSection("CustomConfigSection"); 

section.BackupLocations.Add(element); 

section.SectionInformation.ForceSave = true; 
config.Save(ConfigurationSaveMode.Full); 

該作品以管理員身份登錄時纔會出現問題,並且只有在PC上配置了多個帳戶時纔會發生,所以這意味着這是UAC /權限問題。作爲普通用戶,我沒有該文件夾的正確寫入權限。

現在我的問題(S):

爲什麼用戶的設置值保存到應用程序數據和自定義配置部分試圖在ApplicationFolder/exe.config救?我怎樣才能讓我的自定義節保存到AppData配置文件呢?

我需要能夠保存我的數據爲每個用戶,無論權限。那麼我可以使用自定義配置部分來實現這一點,還是我需要一種不同的方法?最好我想將我的自定義部分保存到AppData配置文件中。我不想在我的安裝程序中使用技巧來調整對我的應用程序文件夾的權限以允許它寫入。 大多數我不想在啓動我的程序時需要管理員權限!

感謝您的回覆,非常感謝。

回答

0

經過一個良好的夜間睡眠,我似乎已經偶然發現了自己的答案。

將配置保存在AppData目錄中,以獲取版本和用戶特定的數據。我所做的實際上是直接打開exe.config,而不是對用戶範圍設置做任何事情,更不用說寫入我的程序當前版本的AppData配置文件。當我意識到這一點時,我知道在谷歌上尋找什麼。

我發現這些文章:

Windows Forms - Creating and Persisting Custom User Settings in C#

Windows Forms - Creating and Persisting Custom User Settings in C# - Part 2

進行實驗,並下載該項目的源文件幫了我很多,給我提供了正好與我所需要的。所以基本上我正在執行我想要做的錯誤功能。

感謝讀者,並感謝里奇先生有點讓我走向正確的方向。