如何在运行时更改应用程序设置。

6

我正在尝试在应用程序的设置文件中更改一个键,但它没有生效。

我是这样做的:

ConfigurationSettings.AppSettings["XPTO"] = "HELLO";

看起来它只在内存中更改,而不是在文件上更改。

有人知道如何做到这一点吗?

谢谢。

3个回答

11

请查看我的.NET设置文件概述......简而言之,我认为您需要一个用户范围内的设置。 这将更符合您的预期。

编辑:如果您正在使用Visual Studio中的设置设计器,那么只需将“Scope”更改为“User”即可。如果没有,则应该能够通过编程方式实现相同的效果。

(译者注:此处保留了原文中的HTML标签)

2
请注意,更改设置并保存时,设置不会在bin文件夹中更改,而是在[userfolder] \ Local Settings \ Application Data \ [company name] \ [application] .exe [hash string] \ [version] \ user.config中更改。 - Jader Dias
1
在更近期的 Windows 版本中,它将被更改为 [userfolder]\AppData\Local\[company name]\[application].exe[hash string]\[version]\user.config。 - Jader Dias
@Jader Yep。我在概述中简要提到了这一点,并给出了编程方式来检索结果路径。但感谢您分享这些细节。 - el2iot2

6

假设您的应用程序对该文件具有写入权限...



    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  // the config that applies to all users
    AppSettingsSection appSettings = config.AppSettings;

    if (appSettings.IsReadOnly() == false)
    {
        appSettings("Key").Value = "new value";

        config.Save();
    }

我忽略了可能会抛出的所有异常...


我该如何访问 ConfigurationManager 类?我尝试使用这段代码,但出现了一些错误,不知道那个类:S。 - rpf
2
添加 System.Configuration 作为引用。 - Joe

5

AppSettings文件不是为可写而设计的。它的设计目的是存储在运行时不会更改但随时间可能会更改的配置,例如:数据库连接字符串、Web服务URL等。

因此,虽然可能可以更新该文件,但实际上您应该重新评估是否应该将该值存储在那里。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接