using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace SlnMesnac.Config { public class IniHelper { public string path; public IniHelper(string INIPath) { path = INIPath; } [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); [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string defVal, Byte[] retVal, int size, string filePath); [DllImport("kernel32", EntryPoint = "GetPrivateProfileString")] private static extern uint GetPrivateProfileStringA(string section, string key, string def, Byte[] retVal, int size, string filePath); /// /// 写INI文件 /// /// /// /// public void IniWriteValue(string Section, string Key, string Value) { WritePrivateProfileString(Section, Key, Value, this.path); } /// /// 读取INI文件 /// /// /// /// public string IniReadValue(string Section, string Key) { StringBuilder temp = new StringBuilder(255); int i = GetPrivateProfileString(Section, Key, "", temp, 255, this.path); //return temp.ToString(); string str = temp.ToString(); return str; } public byte[] IniReadValues(string section, string key) { byte[] temp = new byte[255]; int i = GetPrivateProfileString(section, key, "", temp, 255, this.path); return temp; } /// /// 删除ini文件下所有段落 /// public void ClearAllSection() { IniWriteValue(null, null, null); } /// /// 删除ini文件下personal段落下的所有键 /// /// public void ClearSection(string Section) { IniWriteValue(Section, null, null); } public List ReadKeys(String SectionName) { return ReadKeys(SectionName, this.path); } public List ReadKeys(string SectionName, string iniFilename) { List result = new List(); Byte[] buf = new Byte[65536]; uint len = GetPrivateProfileStringA(SectionName, null, null, buf, buf.Length, iniFilename); int j = 0; for (int i = 0; i < len; i++) if (buf[i] == 0) { result.Add(Encoding.Default.GetString(buf, j, i - j)); j = i + 1; } return result; } } }