有时候 需要 将程序加载自定义的配置文件,除了自己写解析xml文件。内置的ConfigutionManager对象 是个不错的选项。
按照 app.config 的方式,做一个副本。然后从你的配置文件中,加载指定的配置 键值对!
//方法1-可以读取任意位置的xml文件
ExeConfigurationFileMap filemap = new ExeConfigurationFileMap();
filemap.ExeConfigFilename = QuartzConfigPath; //filePath;
var config = ConfigurationManager.OpenMappedExeConfiguration(filemap, ConfigurationUserLevel.None);
// 方法2 -只能读取当前应用程序域中 根目录下的文件:注意exe的含义
//var config = ConfigurationManager.OpenExeConfiguration(QuartzConfigPath);
[csharp] view plain copy 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"); } } } // 如果你的程序是对其它程序的配置文件进行操作,代码如下: [csharp] view plain copy 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); }
- 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);
- }