另外后面大鸟也写了一个。但是不用api来完成的。
using system;
using system.text;
using system.runtime.interopservices;
namespace emuzone.components
{
/// <summary>
/// ini操作类
/// </summary>
public class ini
{
/// <summary>
/// 申明api
/// </summary>
[dllimport("kernel32")]
static extern long writeprivateprofilestring(string lpappname,string lpkeyname,string lpstring,string lpfilename);
[dllimport("kernel32")]
static extern long getprivateprofilestring(string lpappname,string lpkeyname,string lpdefault,stringbuilder lpreturnedstring,int nsize,string lpfilename);
private string strfilename;
private string strsection;
private string strkey;
private string strdefault;
/// <summary>
/// 构造函数
/// </summary>
public ini()
{
strfilename = "";
strsection = "";
strkey = "";
strdefault = "";
}
/// <summary>
/// 读取/设置ini文件区节
/// </summary>
public string section
{
set{strsection = value;}
get{return strsection;}
}
/// <summary>
/// 读取/设置ini文件键值
/// </summary>
public string key
{
set{strkey = value;}
get{return strkey;}
}
/// <summary>
/// 读取/写入ini文件键值的默认值
/// </summary>
public string default
{
set{strdefault = value;}
get{return strdefault;}
}
/// <summary>
/// 读取/设置ini文件的位置
/// </summary>
public string filename
{
set{strfilename = value;}
get{return strfilename;}
}
/// <summary>
/// 写ini文件
/// </summary>
/// <returns>非零整数</returns>
public long write()
{
try
{
return writeprivateprofilestring(strsection,strkey,strdefault,strfilename);
}
catch
{
return 0;
}
}
/// <summary>
/// 以重载、写ini文件
/// </summary>
/// <param name="section">ini文件区节</param>
/// <param name="key">ini文件键值</param>
/// <param name="default">ini文件值</param>
/// <param name="filename">ini文件的位置</param>
/// <returns>非零整数</returns>
public long write(string section,string key,string default,string filename)
{
try
{
return writeprivateprofilestring(section,key,default,filename);
}
catch
{
return 0;
}
}
/// <summary>
/// 读ini文件
/// </summary>
/// <returns>非负整数</returns>
public string read()
{
try
{
const int intsize = 32768;
stringbuilder sb = new stringbuilder(intsize);
long lngreturn = getprivateprofilestring(strsection,strkey,strdefault,sb,intsize,strfilename);
return sb.tostring();
}
catch
{
return strdefault;
}
}
/// <summary>
/// 以重载、读ini文件
/// </summary>
/// <param name="section">ini文件的区节</param>
/// <param name="key">ini文件的键值</param>
/// <param name="default">ini文件的默认值</param>
/// <param name="filename">ini文件的位置</param>
/// <returns>非负整数</returns>
public string read(string section,string key,string default,string filename)
{
try
{
const int intsize = 32768;
stringbuilder sb = new stringbuilder(intsize);
long lngreturn = getprivateprofilestring(section,key,default,sb,intsize,filename);
return sb.tostring();
}
catch
{
return default;
}
}
}
}
