iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >通过C#程序操作Config文件
  • 808
分享到

通过C#程序操作Config文件

2024-04-02 19:04:59 808人浏览 独家记忆
摘要

对于config文件,一般情况下都是使用ConfigurationManager加载,然后通过读取相应节点的值来获取想要的数据,但是,有时候需要修改config文件的值,这时候就用到

对于config文件,一般情况下都是使用ConfigurationManager加载,然后通过读取相应节点的值来获取想要的数据,但是,有时候需要修改config文件的值,这时候就用到了OpenExeConfiguration()方法。

MSDN上面对该方法的解释:ConfigurationManager.OpenExeConfiguration方法用来把指定的客户端配置文件作为Configuration对象打开,该方法具有两个重载:

名称说明
ConfigurationManager.OpenExeConfiguration (ConfigurationUserLevel)将当前应用程序的配置文件作为 Configuration 对象打开。
ConfigurationManager.OpenExeConfiguration (String)将指定的客户端配置文件作为 Configuration 对象打开。

一、使用OpenExeConfiguration(ConfigurationUserLevel)重载设置当前应用程序的配置文件

客户端应用程序使用应用于所有用户的全局配置、应用于单个用户的单独配置以及应用于漫游用户的配置。userLevel 参数通过指示该配置文件是不具有用户级别(配置文件与应用程序位于同一目录中),还是具有一个依每个用户而定的用户级别(配置文件位于用户级别所确定的应用程序设置路径中),从而确定所打开的配置文件的位置。

通过向 userLevel 传递下列值之一来指定要获取的配置:

  • 若要获取应用于所有用户的 Configuration 对象,请将 userLevel 设置为 None。

  • 若要获取应用于当前用户的本地 Configuration 对象,请将 userLevel 设置为 PerUserRoamingAndLocal。

  • 若要获取应用于当前用户的漫游 Configuration 对象,请将 userLevel 设置为 PerUserRoaming。

注意:若要获取资源的 Configuration 对象,您的代码必须对它从中继承设置的所有配置文件具有“读取”特权。若要更新配置文件,您的代码还必须对该配置文件及其所在目录具有“写入”特权。

示例程序:

1、配置文件结构如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="ApServer1" value="ApServer1"/>
    <add key="ApServer2" value="ApServer2"/>
    <add key="LocalHost1" value="LocalHost1"/>
    <add key="LocalHost2" value="LocalHost2"/>
    <add key="addr" value="11111"/>
  </appSettings>
    <startup>
        <supportedRuntime version="v4.0" sku=".netFramework,Version=v4.5" />
    </startup>
</configuration>

2、通过程序修改LocalHost1节点的值

string strLocalHost1Value1 = ConfigurationManager.AppSettings["LocalHost1"].ToString(); //strLocalHost1Value1="LocalHost1";
//Configuration对象
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["LocalHost1"].Value = "Http://127.0.0.1";

//保存配置文件
config.AppSettings.SectionInfORMation.ForceSave = true;
config.Save(ConfigurationSaveMode.Modified);
//重新加载改变的节点
ConfigurationManager.RefreshSection("appSettings");

//读取配置文件的值
string strLocalHost1Value2 = ConfigurationManager.AppSettings["LocalHost1"].ToString();//strLocalHost1Value2="http://127.0.0.1"

二、使用OpenExeConfiguration(String)重载设置指定的客户端配置文件

重载指定的客户端config文件主要包括下面3种情况:

  • 1、加载非当前应用程序yyy.exe默认的config文件的xxx.exe.config文件(yyy.exe是当前应用程序,xxx.exe.config与yyy.exe.config文件不在同一目录下)。
  • 2、加载非应用程序的xxx.config文件。
  • 3、让类库xxx.dll内的函数读取默认config文件的时候,读取的是xxx.dll同级目录下的xxx.dll.config文件,而不是加载xxx.dll的应用程序yyy.exe的默认应用程序配置文件:yyy.exe.config。

注意:在类库中使用ConfigruationManager读取的不是自动编译生成的xxx.dll.config文件,而是引用类库的应用程序yyy.exe的yyy.exe.config文件。

解决方法:

按照MSDN上的说明,我们把要打开的xxx.exe.config的路径作为参数传入,代码如下:

Configuration con = ConfigurationManager.OpenExeConfiguration("C:\\Modify.exe.config");
con.AppSettings.Settings["LocalHost2"].Value = "测试";

但是程序运行的时候报错,经过调试,发现con对象的FilePath属性的值为:C:\Modify.exe.config.config,程序自己在传入的参数后增加了“.config”作为要打开的config文件的路径,因为没有这个文件,所以程序报错。这里要传入的参数,不应该是要打开的config文件的路径,而是这个config文件对应的应用程序的路径,上面的代码应修改为:

//参数传的是应用程序的路径
Configuration con = ConfigurationManager.OpenExeConfiguration("C:\\Modify.exe.");
con.AppSettings.Settings["LocalHost2"].Value = "测试";

再次运行程序,还是报错,提示“加载配置文件时出错:参数exePath”无效。这里要传入应用程序的路径(exePath)没错,但是因为在xxx.exe.config文件的同一目录下,没有xxx.exe文件,因此我们传入的exePath实际上是无效的,为了能够加载xxx.exe.config文件,需要在同一目录下增加一个xxx.exe文件。(可以在同一目录下新建一个txt文件,修改名称为xxx,扩展名为.exe,这样就可以加载xxx.exe.config配置文件了)

完整的代码如下:

//参数传的是应用程序的路径
Configuration con = ConfigurationManager.OpenExeConfiguration("C:\\Modify.exe");
con.AppSettings.Settings["LocalHost2"].Value = "测试";
//保存配置文件
con.AppSettings.SectionInformation.ForceSave = true;
con.Save(ConfigurationSaveMode.Modified);
//重新加载改变的节点
ConfigurationManager.RefreshSection("appSettings");

//读取修改后的配置文件节点值
string str = con.AppSettings.Settings["LocalHost2"].Value;//str="测试"

注意:

使用ConfigurationManager.OpenExeConfiguration(string exePath)即可,同时注意2个小细节:

  • A:改方法需传入的是exePath,而不是configPath;
  • B:exePath必须是有效的,因此xxx.exe和xxx.exe.config应该成对出现,缺一不可。

加载非应用程序的xxx.config文件

在上面的例子中,观察xxx.exe.config文件的名称,发现,若把xxx.exe看成YYY,则xxx.exe.config=YYY.config,也就是说:xxx.exe.config是xxx.config文件的一种特殊形式,所以,可以使用如下的代码加载xx.config文件:

//参数传的是应用程序的路径
Configuration con = ConfigurationManager.OpenExeConfiguration("C:\\Modify");
con.AppSettings.Settings["LocalHost2"].Value = "测试";
//保存配置文件
con.AppSettings.SectionInformation.ForceSave = true;
con.Save(ConfigurationSaveMode.Modified);
//重新加载改变的节点
ConfigurationManager.RefreshSection("appSettings");

//读取修改后的配置文件节点值
string str = con.AppSettings.Settings["LocalHost2"].Value;//str="测试"

注意:C:\Modify这个文件必须要有。

加载xxx.dll.config文件:

还是从文件名上来找思路,我们要加载xxx.dll.config文件,可以和加载xxx.config文件一样。在dll内,碰到需要读取config文件信息的时候,放弃使用ConfigurationManager读取节点的值,而是使用OpenExeConfiguration(string exePath)方法加载config文件为一个Configuration对象来使用。

注意:通过程序修改配置文件中节点的值,不会修改.config文件里面的值,更改只是发生在内存中。

到此这篇关于通过C#程序操作Config文件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 通过C#程序操作Config文件

本文链接: https://www.lsjlt.com/news/140596.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 通过C#程序操作Config文件
    对于config文件,一般情况下都是使用ConfigurationManager加载,然后通过读取相应节点的值来获取想要的数据,但是,有时候需要修改config文件的值,这时候就用到...
    99+
    2024-04-02
  • 如何通过C#程序操作Config文件
    本文小编为大家详细介绍“如何通过C#程序操作Config文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何通过C#程序操作Config文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。对于config文件,...
    99+
    2023-06-29
  • C# 通过ServiceStack 操作Redis
    目录1.引用Nuget包 ServiceStack.Redis2. string 类型的使用作      &nb...
    99+
    2024-04-02
  • C++程序操作文件对话框的方法
    目录1、调用GetOpenFileName接口启动打开文件对话框1.1、OPENFILENAME结构体说明1.2、设置支持文件多选,控制选择文件的个数上限1.3、从OPENFILEN...
    99+
    2024-04-02
  • C++程序员如何操作文件对话框
    今天小编给大家分享一下C++程序员如何操作文件对话框的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、调用GetOpenFi...
    99+
    2023-06-30
  • C# 怎么通过ServiceStack 操作Redis
    这篇文章主要介绍“C# 怎么通过ServiceStack 操作Redis”,在日常操作中,相信很多人在C# 怎么通过ServiceStack 操作Redis问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C# ...
    99+
    2023-06-14
  • 怎么通过Java程序来操作Excel批注
    这篇文章主要介绍“怎么通过Java程序来操作Excel批注”,在日常操作中,相信很多人在怎么通过Java程序来操作Excel批注问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么通过Java程序来操作Exce...
    99+
    2023-06-02
  • Java操作hdfs文件系统过程
    目录1.前置准备2.编码环境前置准备1、导入maven依赖  2、添加一个log4j.properties 文件3.API使用环节1、创建hdfs文件目录2、上传...
    99+
    2024-04-02
  • C#实用教程操作xml文件
    操作XML文件是C#编程中非常常见的任务之一。下面是一个简单的C#实用教程,演示如何使用C#读取、编辑和保存XML文件。读取XML文...
    99+
    2023-09-15
    C#
  • 【C++】C++核心编程(十一)文件操作
    文件操作   程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放,通过文件可以将数据持久化。   C++中对文件进行操作需要包含头文件   文件类型分为两种:     1、文本文件—文件以...
    99+
    2023-09-14
    c++ 开发语言 ios
  • 如何通过C++编写一个简单的文件加密程序?
    如何通过C++编写一个简单的文件加密程序?导语:随着互联网的发展和智能设备的普及,保护个人资料和敏感信息的重要性越来越显著。为了确保文件的安全性,常常需要对其进行加密。本文将介绍如何使用C++编写一个简单的文件加密程序,以保护你的文件免受未...
    99+
    2023-11-03
    简单程序 文件加密 C++编程
  • C#WinForm自动更新程序之文件上传操作详解
    目录前言开发环境开发工具实现代码实现效果前言 更新都写完了,但是要更新文件要怎么操作呢?连接服务器然后上传上去,修改下xml的版本号当然也是可以的,但是还是没有写个程序使用起来方便,...
    99+
    2022-11-13
    C# WinForm自动更新程序 C# WinForm 更新程序 C# 更新程序 C# WinForm
  • Python通过m3u8文件下载合并ts视频的操作
    前段时间,接到一个需求,要求下载某一个网站的视频,然后自己从网上查阅了相关的资料,在这里做一个总结。 1. m3u8文件 m3u8是苹果公司推出一种视频播放标准,是一种文件检索格式,...
    99+
    2024-04-02
  • myfaces 在程序中配置文件的操作
    使用myfaces的实现类org.apache.myfaces.config.RuntimeConfig 对象可以获取当前的配置文件的信息。操作RuntimeConfig.getCurrentInstance(FactsUtils.getF...
    99+
    2023-06-03
  • Python 程序通过可执行文件部署方式
    目录1.PyInstaller:2.cx_Freeze:以下是两种常用的打包 Python 程序成 exe 的方式: 1.PyInstaller: PyInstaller 是一个用于...
    99+
    2023-05-18
    Python 可执行文件 打包 Python 程序成 exe
  • pyinstaller通过spec文件打包py程序的步骤
    目录Pyinstaller打包环境打包一个py脚本程序打包一个py项目程序补充Pyinstaller pyinstaller是python的一个第三方模块,使用它可以将python程...
    99+
    2023-05-18
    pyinstaller打包py程序 spec文件打包py程序
  • 文件操作精通:掌握操作系统中的关键操作
    文件操作是使用操作系统时的一项基本技能。通过理解和利用这些操作,用户可以有效地管理、创建、编辑和删除文件。以下是对文件操作精通的详细指南: 命令行文件操作 命令行提供了用户与操作系统直接交互的界面。许多文件操作命令可以在命令行中执行,包括...
    99+
    2024-02-29
    文件操作、操作系统、命令行、文件管理
  • C#中怎么操作文本文件
    这篇文章给大家介绍C#中怎么操作文本文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#操作文本文件演练实例浅析 using System;  using Syste...
    99+
    2023-06-17
  • Python 通过分隔符分割文件后按特定次序重新组合的操作
    看代码吧~ #-*-encoding:utf-8-*- import os, sys, time, datetime, glob fo1 = open("C:/Users/Adm...
    99+
    2024-04-02
  • 文件操作的进阶攻略:精通操作系统
    文件操作是计算机编程中一项基本任务,精通文件操作对程序员至关重要。本文将深入探讨文件操作的进阶技巧,帮助读者全面掌握操作系统的文件管理功能。 文件描述符 在操作系统中,文件由文件描述符标识。文件描述符是一个整数,指向特定的文件。通过文件描...
    99+
    2024-02-29
    文件操作、操作系统、命令行、Python、C++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作