调用Windows API来处理这件事情,事情会变得简单。调用方式如下:
/// <summary>
/// 读取INI文件中的字符串
/// </summary>
[DllImport("KERNEL32.dll")]
public static extern uint GetPrivateProfileStringA(
string lpAppName,
string lpKeyName,
string lpDefault,
[MarshalAs(UnmanagedType.LPArray)] byte[] lpBuffer,
uint nSize,
string lpFileName);
/// <summary>
/// 读取INI文件中的整数
/// </summary>
[DllImport("KERNEL32.dll")]
public static extern uint GetPrivateProfileIntA(
string lpAppName,
string lpKeyName,
int nDefault,
string lpFileName);
[DllImport("KERNEL32.dll")]
public static extern bool WritePrivateProfileStringA(
string lpAppName, // section name
string lpKeyName, // key name
string lpString, // string to add
string lpFileName); // initialization file切记:从在GetPrivateProfileStringA函数中,从ini 文件读取的字符串处理要千万注意。

解决方案 »

  1.   

    其实在C#和.net中更推荐用xml来实现ini的功能!
      

  2.   

    http://www.codeproject.com/soap/ini2xml.asp
      

  3.   

    写了一个访问INI文件的类,你看一下吧public class AccessIni
    {
    [DllImport("kernel32")]
    private static extern long WritePrivateProfileString(string section,string key,string val,string filePath);
    [DllImport("kernel32")]
    private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath);
    private string IniFilePath;
    /// <summary>
    /// 初始化Ini文件。
    /// </summary>
    /// <param name="IniFileName">Ini文件的路径及名称</param>
    public AccessIni(string IniFileName)
    {
    IniFilePath=IniFileName;
    if (!File.Exists(IniFilePath))
    File.Create(IniFilePath);
    }
    /// <summary>
    /// 为INI文件指定的节设置项和值。
    /// </summary>
    /// <param name="Section">INI文件中的小节名称</param>
    /// <param name="Key">INI文件中的项名称</param>
    /// <param name="KeyValue">INI文件中项的值名称</param>
    /// <returns>标识完成状态,返回0表示写入失败,1为成功</returns>
    public int WriteIni(string Section,string Key,string KeyValue)
    {
    int SucessMark=0;
    string FileName = IniFilePath;
    long wpp;
    wpp=WritePrivateProfileString(Section,Key,KeyValue,FileName);
    if (wpp!=0)
    SucessMark=1;
    System.Diagnostics.Trace.WriteLine(wpp.ToString());
    return SucessMark;
    }
    /// <summary>
    /// 返回INI文件中的节的某一项的值。
    /// </summary>
    /// <param name="section">INI文件中的小节名称</param>
    /// <param name="key">INI文件中的项名称</param>
    /// <returns>返回项的值,如果取错误也是返回空</returns>
    public string GetIni(string section,string key)
    {
    StringBuilder GetS=new StringBuilder(255);
    string FileName = IniFilePath;
    GetPrivateProfileString(section,key,"",GetS,255,FileName);
    return GetS.ToString();
    }
    }
      

  4.   

    http://www.zdnet.com.cn/developer/code/story/0,2000081534,39065664,00.htm
    和你问的一模一样!!