WPF:在运行时更改配置文件用户设置?

Posted

技术标签:

【中文标题】WPF:在运行时更改配置文件用户设置?【英文标题】:WPF: Changing config file user settings at runtime? 【发布时间】:2011-01-28 00:40:54 【问题描述】:

我正在尝试更改我的 WPF 应用程序中的一些配置文件用户设置值,但它只能部分工作。该值已正确更改,并且程序可以使用该值正常运行。我什至可以重新启动程序,并且该值仍然是我将其更改为的值。问题是当我打开 .exe.config 文件时,该值仍然是旧值。我使用此代码更改值:

Properties.Settings.Default.ProjectNumber = varTestExample;
Properties.Settings.Default.Save();

此保存代码在哪里保存更改以及在我运行此代码后程序如何/在哪里读取值? 如果我运行程序的干净版本,则 ProjectNumber 值是从 .exe.config 文件中正确获取的,如果我更改配置文件中的值,它也会在我运行程序时更改。但是一旦我运行上面的代码,程序就不会从配置文件中读取值。为什么?

【问题讨论】:

【参考方案1】:

设置保存在每个用户的基础上。您应该查看C:\Documents and Settings\[UserName]\... (WinXP) 或C:\Users\... (Vista/7) 中的Application Data 文件夹。

在不保存任何设置的情况下,程序使用默认配置,即您的*.exe.config 文件。但是,一旦您保存更改,就会创建一个用户特定的设置文件,并在下次启动时加载此文件。我想,这应该可以解释你的行为。

【讨论】:

【参考方案2】:

用户保存的设置存储在用户的 AppData 目录下。通常 C:\Users\\AppData\Local\\

.exe.config 文件中存储的值是默认值(您在 VS 的设置编辑器中设置)

希望对你有帮助

【讨论】:

【参考方案3】:

Properties.Settings 仅指基于用户的设置,应用程序设置是一组完全独立的设置,如果您使用 ClickOnce 安装,这些设置将被覆盖 - 因此请注意您存储在那里的配置。

 private void updateDataInConfigFile()
    
        Xml xmlConfigFile = new Xml(ProjectName.sSettingFileName);
        xmlConfigFile.SetValue("My Setting Section", "MyFirstSetting", MySettingValue);

  private void GetDataFromConfigFile()
    
        Xml xmlConfigFile = new Xml(MyProject.sSettingFileName);

        txtAccessDriverId.Text = xmlConfigFile.GetValue("Mys Setting Section", "MyFirstSetting").ToString();

【讨论】:

以上是关于WPF:在运行时更改配置文件用户设置?的主要内容,如果未能解决你的问题,请参考以下文章

WPF 分享一种设置程序保存配置文件的方法

如何更改在 ECS 上运行的 mongo 的配置文件

Docker容器怎样更改容器内应用程序的配置文件

Git 配置用户设置“添加条目按钮”被禁用

刷新当前用户配置文件

conda 设置改变用户路径2021-02-09