ConfigurationManager 修改

本文详细介绍如何使用C#操作应用程序配置文件(app.config),包括读取和更新AppSettings及ConnectionStrings部分,还提供了数据库连接字符串的加密方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        if (AppSettingsKeyExists(strKey, config))
        {
            config.AppSettings.Settings[strKey].Value = newValue;
            config.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("appSettings");

        }




public class ConfigureAppConfig
{
    //静态构造,不能实例化
    static ConfigureAppConfig() { }
    / ** <summary>
    /// 获取AppSettings配置节中的Key值
    /// </summary>
    /// <param name="keyName">Key's name</param>
    /// <returns>Key's value</returns>

     public static string GetAppSettingsKeyValue(string keyName)
    {
        return ConfigurationManager.AppSettings.Get(keyName);
    }
    /** <summary>
    /// 获取ConnectionStrings配置节中的值
    /// </summary>
    /// <returns></returns>
    public static string GetConnectionStringsElementValue()
    {
        ConnectionStringSettings settings = System.Configuration.ConfigurationManager.ConnectionStrings["connectionString"];
        return settings.ConnectionString;
    }
    /** <summary>
    /// 保存节点中ConnectionStrings的子节点配置项的值
    /// </summary>
    /// <param name="elementValue"></param>
    public static void ConnectionStringsSave(string ConnectionStringsName, string elementValue)
    {
        System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        config.ConnectionStrings.ConnectionStrings["connectionString"].ConnectionString = elementValue;
        config.Save(ConfigurationSaveMode.Modified);
        ConfigurationManager.RefreshSection("connectionStrings");
    }
     /** <summary>
    /// 判断appSettings中是否有此项
    /// </summary>
    private static bool AppSettingsKeyExists(string strKey, Configuration config)
    {
        foreach (string str in config.AppSettings.Settings.AllKeys)
        {
            if (str == strKey)
            {
                return true;
            }
        }
        return false;
    }
     /** <summary>
    /// 保存appSettings中某key的value值
    /// </summary>
    /// <param name="strKey">key's name</param>
    /// <param name="newValue">value</param>
    public static void AppSettingsSave(string strKey, string newValue)
    {
        System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        if (AppSettingsKeyExists(strKey, config))
        {
            config.AppSettings.Settings[strKey].Value = newValue;
            config.Save(ConfigurationSaveMode.Modified);
            ConfigurationManager.RefreshSection("appSettings");
        }
    }
}

如果你的程序是对其它程序的配置文件进行操作,代码如下:
ExeConfigurationFileMap filemap = new ExeConfigurationFileMap();
filemap.ExeConfigFilename = filePath;//配置文件路径
config = ConfigurationManager.OpenMappedExeConfiguration(filemap, ConfigurationUserLevel.None);
if (AppSettingsKeyExists("Refresh", config))
{
    config.AppSettings.Settings["Refresh"].Value = M_TimeRead.ToString();
}
if (AppSettingsKeyExists("MachineNo", config))
{
    config.AppSettings.Settings["MachineNo"].Value = M_MachineNo;
}
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
config.ConnectionStrings.ConnectionStrings["connectionString"].ConnectionString = M_ConnectionString;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("connectionStrings");

数据库字符串加密
ExeConfigurationFileMap filemap = new ExeConfigurationFileMap();
filemap.ExeConfigFilename = Application.ExecutablePath + ".Config"; //filePath;
config = ConfigurationManager.OpenMappedExeConfiguration(filemap, ConfigurationUserLevel.None);
//指定我所要的节点
ConfigurationSection section = config.ConnectionStrings;
if ((section.SectionInformation.IsProtected == false) && (section.ElementInformation.IsLocked == false))
{
    //制定节点加密
    section.SectionInformation.ProtectSection(protect);
    //即使没有修改也保存设置
    section.SectionInformation.ForceSave = true;
    //配置文件内容保存到xml
    config.Save(ConfigurationSaveMode.Full);
}
注意:App.config只能作为初始化的定义,工程生成后运行程序集名称.exe  修改生成后的程序集名称.exe.Config文件。一开始调试时看到控制结果是想要的结果,但看App.config配置文件内容没变(VS2008 F5调试模式下是修改 程序集名称.vshost.exe.config配置文件还以为是代码有问题,网上搜,也有人到此现象,原来是自己没有理解到MSDN的说明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值