我使用app.config文件來存儲和讀取一些參數(sql服務器實例名稱,用戶,密碼,日誌目錄等)。現在,我需要修改一些依賴於用戶的參數,並且只有在我從bin/release目錄運行.exe時才管理它。 當我創建安裝程序並安裝我的應用程序時,我無法更改此參數 - 它會引發TargetInvocationException。我試圖以管理員身份運行我的應用程序,但沒有成功。在運行時修改app.config拋出異常
的代碼,我目前使用的是以下幾點:
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings.Remove("username");
config.AppSettings.Settings.Add("username", this.Config.Username);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
我試過計算器上,但沒有成功發現了一些其他的解決方案......
當你運行代碼,你有什麼值this.Config.Username .. ?? – MethodMan 2012-01-10 17:11:40
這是一個非常經典的UAC陷阱。您可以在開發機器上調試程序時修改該文件,但安裝後無法運行。 'c:\ program files'中的文件是不可寫的。您需要一個單獨的程序來編輯該文件,以便它可以請求UAC提升。或者不使用設置來存儲這些信息,AppData中的.xml文件也可以工作。 – 2012-01-10 18:42:02
用戶名@DJKRAZE的值是有效的。閱讀作品。 – davor 2012-01-10 20:24:07