2012-01-12 110 views
1

我有一個app.config像下面,如何修改App.Config中區間值

<configuration> 
    <environment> 
     <add key="security" value="1"/> -- I want to change this value to 3 
    </environment> 
</configuration> 

我試着像下面去環境部分,

Configuration config = ConfigurationManager.OpenExeConfiguration(exePath); 
var environment = config.GetSection("environment"); 

環境變量不給我足夠的選項來讓子元素修改值。有沒有人可以幫我解決這個問題。

+0

請看[this](http://stackoverflow.com/questions/8785502/storing-remember-me-information-locally-c-sharp-total-newbeginner/8785646)問題 – Shai 2012-01-12 10:25:55

+0

環境的類型是什麼'配置部分? – Oded 2012-01-12 10:31:11

+0

@Oded它沒有任何類型。 – Lamps 2012-01-12 10:38:34

回答

3

使用用戶範圍設置!永遠不要以這種方式改變應用程序配置。在應用程序中更改的任何值都應該是用戶設置。

通常情況下,你通過

Properties.Settings.Default.MyConfigurationValue = ....; 
Properties.Settings.Default.Save(); 

編輯訪問這些設置
樣品做什麼,我在評論中寫道。創建兩個用戶設置:FirstRun是一個bool,默認設置爲trueEnvironment是您的值,默認設置爲0

然後,例如在Main功能Program.cs你做到以下幾點:

if (Properties.Settings.Default.FirstRun) 
{ 
    Properties.Settings.Default.FirstRun = false; 
    if (myConditionIsTrue) 
     Properties.Settings.Default.Environment = 3; 
    Properties.Settings.Default.Save(); 
} 

在您的應用程序後,它足夠使用Properties.Settings.Default.Environment。這就是設置機制如果要從應用程序更改配置值的目的。

在Windows 2000,XP,7和Windows Server分支下,您甚至沒有權限修改Program Files文件夾中的app.config,所以不要!

+0

但在我的情況下,我想修改該值。我正在修改那些基於某些條件的應用程序的安裝時間。 – Lamps 2012-01-12 10:38:09

+0

條件是什麼?正確的方法是讓用戶設置提供默認值。然後,首次運行應用程序時,根據條件確定正確的值。如果您使用的是在複製到用戶系統之前修改配置文件的安裝應用程序,情況可能會有所不同。在那種情況下,你正在討論修改一個簡單的XML文件,它根本與設置機制無關。如果你想使用設置機制,你應該正確使用它們。 – 2012-01-12 10:42:12

+0

在安裝時我需要查詢註冊表並讀取特定值,將該值放入app.config中。我正在使用安裝程序類來實現此目的。 是的,我正在使用安裝應用程序。 – Lamps 2012-01-12 10:47:34