读写INI:
首先,得到当前exe的运行路径
ApplicationPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
下面是操作INI文件的类
using System;
using System.Runtime.InteropServices;
using System.Text;
using System.IO;

namespace Ini


{

/**//// <summary>
/// Ini的摘要说明。
/// </summary>
public class IniFile

{

public string path;


写入信息文件#region 写入信息文件
private void WritePrivateProfileString(string ApplicationName, string KeyName, string Value, string FileName)

{
string[] iniItems = new string[0];
string iniLines = null;
string iniLine = null;
string iniItem = null;
int i, j;
try

{
//读取INI文件;
System.IO.StreamReader iniFile = new System.IO.StreamReader(FileName, System.Text.Encoding.Default);
iniLines = iniFile.ReadToEnd();
iniFile.Close();
}
catch

{
}

//如果信息文件还沒有任何內容,將节点写到第一行
if (iniLines == null)

{
StreamWriter CreatFile = File.CreateText(FileName);
CreatFile.Close();
StreamWriter FileWriter = new StreamWriter(FileName, true, System.Text.Encoding.Default);
FileWriter.WriteLine("[" + ApplicationName + "]");
FileWriter.WriteLine(KeyName + "=" + Value);
FileWriter.Close();
return;
}
else

{
//否则的话得到已有的节点
iniItems = System.Text.RegularExpressions.Regex.Split(iniLines, "\r\n");
}

//以回车符分割,得到每一行
bool HaveParentNode = false;
string IniContent = "";
int IndexLength = 0;
if (iniItems[iniItems.Length - 1] == "")

{
IndexLength = iniItems.Length - 1;
}
else

{
IndexLength = iniItems.Length;
}
for (i = 0; i < IndexLength; i++)

{
iniItem = iniItems[i].Trim();
if (iniItem[0] == '[' && iniItem[iniItem.Length - 1] == ']')

{
if (IniContent == "")

{
IniContent = iniItems[i].ToString();
}
else

{
IniContent += "\r\n" + iniItems[i].ToString();
}
if (iniItems[i].ToString() == "[" + ApplicationName + "]")

{
HaveParentNode = true;
bool HaveNode = false;
try

{
//找到相对应的父节点的话,查找是否有对应的子节点
for (j = (i + 1); j < IndexLength; j++)

{
iniLine = iniItems[j].Trim();
if (iniLine[0] == '[' && iniLine[iniLine.Length - 1] == ']')

{
if (!HaveNode)

{
HaveNode = true;
IniContent += "\r\n" + KeyName + "=" + Value;
}
break;
}

iniLine = iniItems[j].TrimStart().Replace(" ", "");
if (iniLine.Substring(0, Math.Min(KeyName.Length + 1, iniLine.Length)).ToUpper() == KeyName.ToUpper() + "=")

{
//如果找到了Key匹配
HaveNode = true;
IniContent += "\r\n" + KeyName + "=" + Value;
}
else

{
IniContent += "\r\n" + iniItems[j].ToString();
}
}
}
catch (System.Exception ex)

{
ex.ToString();
}

if (!HaveNode)

{
HaveNode = true;
IniContent += "\r\n" + KeyName + "=" + Value;
}
}
else

{
for (j = (i + 1); j < IndexLength; j++)

{
iniLine = iniItems[j].Trim();
if (iniLine[0] == '[' && iniLine[iniLine.Length - 1] == ']')

{
break;
}
else

{
IniContent += "\r\n" + iniItems[j].ToString();
}
}
}
}
}

if (!HaveParentNode)

{
IniContent += "\r\n[" + ApplicationName + "]";
IniContent += "\r\n" + KeyName + "=" + Value;
}

StreamWriter ReplaceFile = File.CreateText(FileName);
ReplaceFile.Close();
StreamWriter ReplaceWriter = new StreamWriter(FileName, true, System.Text.Encoding.Default);
ReplaceWriter.Write(IniContent);
ReplaceWriter.Close();
}
#endregion


读取信息文件#region 读取信息文件
private string GetPrivateProfileString(string ApplicationName, string KeyName, string Default, string FileName)

{
string[] iniItems = new string[0];
string iniLines;
string iniLine;
int i, j;
try

{
//读取INI文件;
System.IO.StreamReader iniFile = new System.IO.StreamReader(FileName, System.Text.Encoding.Default);
iniLines = iniFile.ReadToEnd();
iniFile.Close();
}
catch

{
return Default;
}
//以回车符分割,得到每一行
iniItems = System.Text.RegularExpressions.Regex.Split(iniLines, "\r\n"); ;
//遍历每一行
for (i = 0; i < iniItems.GetLength(0); i++)

{
//找到匹配值
if (iniItems[i].Trim().ToUpper() == '[' + ApplicationName.Trim().ToUpper() + ']')

{
//从下一行开始搜索
for (j = i + 1; j < iniItems.GetLength(0); j++)

{
iniLine = iniItems[j].Trim();
if (iniLine.Length > 0)

{
//如果找到了另一个段,那么就越段了,则返回默认值
if (iniLine[0] == '[' && iniLine[iniLine.Length - 1] == ']') return Default;
}
//去掉所有空格
iniLine = iniItems[j].TrimStart().Replace(" ", "");
if (iniLine.Substring(0, Math.Min(KeyName.Length + 1, iniLine.Length)).ToUpper() == KeyName.ToUpper() + "=")

{
//如果找到了Key匹配
return iniItems[j].Substring(iniItems[j].IndexOf('=') + 1);
}
}
return Default;//没有找到key匹配的,则返回默认值
}
}
return Default;//返回默认值
}
#endregion

public IniFile(string INIPath)

{
path = INIPath;
}

public void IniWriteValue(string Section, string Key, string Value)

{
WritePrivateProfileString(Section, Key, Value, this.path);
}

public string IniReadValue(string Section, string Key)

{
return GetPrivateProfileString(Section, Key, "", this.path);
}

}
}

使用方法
写信息文件
IniFile NewIni = new IniFile(ApplicationPath + "\\Test.ini");
NewIni.IniWriteValue("测试信息","测试一","1");
读取
IniFile NewIni = new IniFile(ApplicationPath + "\\Test.ini");
string a = NewIni .IniReadValue("测试信息","测试一");
读取结果
a = 1
备注:以上代码在HP 2490(WM5)上测试通过