zoukankan      html  css  js  c++  java
  • C# 程序配置文件的操作(ConfigurationManager的使用)

    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);
    }
  • 相关阅读:
    leetcode 29-> Divide Two Integers without using multiplication, division and mod operator
    ros topic 发布一次可能会接收不到数据
    python中的print()、str()和repr()的区别
    python 部分函数
    uiautomatorviewer错误 unable toconnect to adb
    pyqt 不规则形状窗口显示
    appium 计算器demo
    Spring 3.0 注解注入详解
    Spring Autowire自动装配
    restful 学习地址
  • 原文地址:https://www.cnblogs.com/Shadow3627/p/2983474.html
Copyright © 2011-2022 走看看