// inifile.cs using System; using System.IO; using System.Text; using System.Runtime.InteropServices; class IniFileHandler { [DllImport("KERNEL32.DLL")] public static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, uint nSize, string lpFileName); [DllImport("KERNEL32.DLL",EntryPoint="GetPrivateProfileStringA")] public static extern uint GetPrivateProfileStringByByteArray(string lpAppName, string lpKeyName, string lpDefault, byte [] lpReturnedString, uint nSize, string lpFileName); [DllImport("KERNEL32.DLL")] public static extern uint GetPrivateProfileInt( string lpAppName, string lpKeyName, int nDefault, string lpFileName ); [DllImport("KERNEL32.DLL")] public static extern uint WritePrivateProfileString( string lpAppName, string lpKeyName, string lpString, string lpFileName); } public class Sample { static void Main() { // キーと値を書き加える IniFileHandler.WritePrivateProfileString("アプリ1", "キー1", "ハロー", @"c:\sample.ini"); IniFileHandler.WritePrivateProfileString("アプリ1", "キー2", "1234", @"c:\sample.ini"); IniFileHandler.WritePrivateProfileString("アプリ2", "キー1", "good morning", @"c:\sample.ini"); // 文字列を読み出す StringBuilder sb = new StringBuilder(1024); IniFileHandler.GetPrivateProfileString("アプリ1", "キー1", "default", sb, (uint)sb.Capacity, @"c:\sample.ini"); Console.WriteLine("アプリ1セクションに含まれるキー1の値: {0}", sb.ToString()); // 整数値を読み出す uint resultValue = IniFileHandler.GetPrivateProfileInt("アプリ1", "キー2", 0, @"c:\sample.ini"); Console.WriteLine("アプリ1セクションに含まれるキー2の値: {0}", resultValue); // 指定セクションのキーの一覧を得る byte [] ar1 = new byte[1024]; uint resultSize1 = IniFileHandler.GetPrivateProfileStringByByteArray("アプリ1", null, "default", ar1, (uint)ar1.Length, @"c:\sample.ini"); string result1 = System.Text.Encoding.Default.GetString(ar1, 0, (int)resultSize1-1); string [] keys = result1.Split('\0'); foreach (string key in keys) { Console.WriteLine("アプリ1セクションに含まれるキー名: {0}", key); } // 指定ファイルのセクションの一覧を得る byte [] ar2 = new byte[1024]; uint resultSize2 = IniFileHandler.GetPrivateProfileStringByByteArray(null, null, "default", ar2, (uint)ar2.Length, @"c:\sample.ini"); string result2 = System.Text.Encoding.Default.GetString(ar2, 0, (int)resultSize2-1); string [] sections = result2.Split('\0'); foreach (string section in sections) { Console.WriteLine("このファイルに含まれるセクション名: {0}", section); } // 1つのキーと値のペアを削除する IniFileHandler.WritePrivateProfileString("アプリ2", "キー1", null, @"c:\sample.ini"); // 指定セクション内の全てのキーと値のペアを削除する IniFileHandler.WritePrivateProfileString("アプリ1", null, null, @"c:\sample.ini"); } } // コンパイル方法:csc inifile.cs