You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WPF应用运行时修改app.config中appSettings的PdfSavePath

解决WPF运行时修改app.config中AppSettings值的问题

你遇到的问题很常见——直接用ConfigurationManager.AppSettings["PdfSavePath"] = SavePath只会修改内存中的临时值,根本不会把变更持久化到实际的配置文件里,而且这个索引器本质上是只读的,赋值操作其实不会生效。

要实现运行时修改并持久化配置,你需要通过Configuration对象来操作,具体步骤如下:

1. 确保引用System.Configuration程序集

WPF项目默认不会自动引用这个程序集,你需要手动添加:

  • 右键项目 → 管理NuGet程序包,搜索System.Configuration.ConfigurationManager并安装;
  • 或者在项目引用里添加框架程序集System.Configuration。

2. 使用可写的Configuration对象修改并保存

下面是完整的代码示例,假设SavePath是用户选择的新路径:

using System.Configuration;

// 获取当前应用的可写配置对象
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

// 修改指定键的值
if (config.AppSettings.Settings["PdfSavePath"] != null)
{
    config.AppSettings.Settings["PdfSavePath"].Value = SavePath;
}
else
{
    // 如果键不存在,新增一个
    config.AppSettings.Settings.Add("PdfSavePath", SavePath);
}

// 保存变更到配置文件
config.Save(ConfigurationSaveMode.Modified);

// 刷新ConfigurationManager,让内存中的值同步更新
ConfigurationManager.RefreshSection("appSettings");

注意事项

  • 保存后,实际修改的是运行目录下的你的应用名.exe.config文件,而不是项目中的原始app.config(原始文件只会在编译时复制到输出目录);
  • 如果你的应用是ClickOnce部署的,这种方式可能不适用,因为ClickOnce的配置文件有特殊的处理机制;
  • 确保应用有对运行目录的写入权限,否则保存会抛出权限异常。

内容的提问来源于stack exchange,提问作者Gregor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:46:32