vs2003 无法更改appconfig文件问题的解决

开发时遇到的问题,列出来大家分享

vs2005以后的版本就不用这么麻烦了。

 

网上有朋友用xml解析的方法修改appconfig文件,可是还要重启程序。

 

可以用ini文件来设置程序的连接信息

"//deploy.ini 是自定义的配置文件名称,它的位置就是你程序安装的位置

 

  
  #region API函数声明#region API函数声明

  [DllImport("kernel32")]//返回0表示失败,非0为成功
  private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);

  /// <summary>
  /// 返回取得字符串缓冲区的长度
  /// </summary>
  /// <param name="section">节Section的名字用[]括起来</param>[section]
  /// <param name="key">等号左边字段名</param>key=value
  /// <param name="def">当在配置文件中没有找到具体的Value时,就用def的值来代替</param>
  /// <param name="retVal"></param>
  /// <param name="size"></param>
  /// <param name="filePath">配置文件所在路径</param>
  /// <returns></returns>
  [DllImport("kernel32")]//返回取得字符串缓冲区的长度
  private static extern long GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);

  #endregion

  #region 读Ini文件#region 读Ini文件

  /// <summary>
  /// 读Ini文件#region 读Ini文件
  /// </summary>
  /// <param name="Section"></param>
  /// <param name="Key"></param>
  /// <param name="NoText">当在配置文件中没有找到具体的Value时,就用NoText的值来代替</param>
  /// <param name="iniFilePath">配置文件所在路径</param>
  /// <returns></returns>
  //public static string ReadIniData(string Section,string Key,string NoText,string iniFilePath)
  public static string ReadIniData(string Section,string Key)
  {
   string iniFilePath = Path.GetDirectoryName(Application.ExecutablePath) + "//deploy.ini";

   if(File.Exists(iniFilePath))
   {
    StringBuilder temp = new StringBuilder(1024);
    //GetPrivateProfileString(Section,Key,NoText,temp,1024,iniFilePath);
    GetPrivateProfileString(Section,Key,"",temp,1024,iniFilePath);
    return temp.ToString();
   }
   else
   {
    return string.Empty;
   }
  }

  #endregion
 
  
  #region 写Ini文件
 
  /// <summary>
  /// 写Ini文件
  /// </summary>
  /// <param name="Section">[段名]</param>
  /// <param name="Key">字段名</param>
  /// <param name="Value">字段对应值</param>
  /// <returns></returns>
  public static bool WriteIniData(string Section,string Key,string Value)
  {
   string iniFilePath = Path.GetDirectoryName(Application.ExecutablePath) + "//deploy.ini";
   
   if(File.Exists(iniFilePath))
   {
    long OpStation = WritePrivateProfileString(Section,Key,Value,iniFilePath);   
    if(OpStation == 0)
    {
     return false;
    }
    else
    {
     return true;
    }
   }
   else
   {
    return false;
   }
  }

  #endregion

 

 

appconfig文件的更改自己也找了一个可行的方法

 

/// <summary>
  /// 更改app.config节点值
  /// </summary>
  /// <param name="Key">节点名称</param>
  /// <param name="Xvalue">值</param>
  public static void UpdateConfig(string Key, string Xvalue)
  {
   XmlDocument doc = new XmlDocument();
   doc.Load(Application.ExecutablePath + ".config");
   XmlNode node = doc.SelectSingleNode(@"//add[@key='" + Key + "']");
   XmlElement ele = (XmlElement)node;
   ele.SetAttribute("value", Xvalue);
   doc.Save(Application.ExecutablePath + ".config");
  
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值