c# - 如何以编程方式更新和保存 app.config 应用程序设置

标签 c# .net vb.net

我目前正在开发一个 WPF/.Net 项目, 在这个项目中,用户可以选择完全更改应用程序的皮肤, 我正在尝试使用配置管理提交后编写这些设置, 但我似乎无法将新值添加到 app.config 文件中,这是我的方法

Public Sub SetApplicationSetting(pstrAppSettingName As String, pstrAppSettingValue As String)
    Dim lobjconfig As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)

    lobjconfig.AppSettings.Settings.Add(pstrAppSettingName, pstrAppSettingValue)
    lobjconfig.Save(ConfigurationSaveMode.Full)
    ConfigurationManager.RefreshSection("appSettings")
End Sub

有什么想法吗?

现在街上的说法是我无法添加到已有的内容中,所以我想也许我应该在更新之前先将其删除, 但仍然没有任何结果,这是新代码

 Dim lobjconfig As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)

            lobjconfig.AppSettings.Settings.Remove(pstrAppSettingName)
            lobjconfig.AppSettings.Settings.Add(pstrAppSettingName, pstrAppSettingValue)


               lobjconfig.AppSettings.Settings.CurrentConfiguration.Save()
            lobjconfig.Save(ConfigurationSaveMode.Full, True)

        ConfigurationManager.RefreshSection("appSettings")

最佳答案

我的猜测是,您正在尝试更改所有用户的配置 (ConfigurationUserLevel.None),并且您可能无权这样做。当失败时,我预计会出现异常,而您没有说抛出异常,所以我可能走错了路。

要找到罪魁祸首,您可以尝试 ConfigurationUserLevel.PerUserRoamingAndLocalConfigurationUserLevel.PerUserRoaming 并查看是否效果更好。

或者,但我怀疑这会有所不同,您可以使用以下行专门从某个位置获取配置:

Configuration config = ConfigurationManager.OpenExeConfiguration(
                          Assembly.GetEntryAssembly().Location);

关于c# - 如何以编程方式更新和保存 app.config 应用程序设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8880514/

相关文章:

c# - 在单独的线程上执行进程会导致 System.IO.__Error.WinIOError

c# - .net 3.5 中的 WebFaultException 类

c# - Oracle 客户端的可选 sql 命令参数

vb.net - 如何使用 Exuberant Ctags 为 VB.NET 文件创建标签?

.net - 逗号 "izing"项目列表

c# - 添加到多对多关系表会在数据库中产生重复值

c# - 具有效果和触发器的图像模板

c# - 在 Visual Studio 2008 中单步执行 C# 时如何找到方法调用方?

.net - 由于编码问题,WebClient.DownloadString 导致字符损坏,但浏览器正常

.net - 隐式定义的变量会抛出运行时错误,而显式定义则不会