2012-01-12 53 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