天天看点

winform编程——做过ini配置文件创建文件、添加配置项,修改配置项,删除配置项

public sealed class inifile

    {

        private string path;

        /// <summary>

        /// 实例初始化为指定路径的ini文件。

        /// </summary>

        /// <param name="path">ini文件路径。</param>

        public inifile(string path)

        {

            this.path = path;

        }

        /// 获取ini文件的路径。

        public string path

            get

            {

                return path;

            }

        /// 读取指定小节下指定条目的字符串。

        /// <param name="sectionname">欲在其中查找条目的小节名称。这个字串不区分大小写。</param>

        /// <param name="keyname">欲获取的项名或条目名。这个字串不区分大小写。</param>

        /// <param name="defaultvalue">指定的条目没有找到时返回的默认值。</param>

        /// <returns>指定小节下指定条目的字符串。</returns>

        /// <remarks>如果sectionname为null,则返回所有小节的列表,如果keyname为null,指定小节所有项的列表。</remarks>

        public string readstring(string sectionname,string keyname,string defaultvalue)

            const int maxsize = 255;

            stringbuilder temp = new stringbuilder(maxsize);

            getprivateprofilestring(sectionname, keyname, defaultvalue, temp, 255, this.path);

            return temp.tostring();

        public void writestring(string sectionname, string keyname, string value)

            writeprivateprofilestring(sectionname, keyname, value, this.path);

        public int readinteger(string sectionname, string keyname, int defaultvalue)

            return getprivateprofileint(sectionname, keyname, defaultvalue,this.path);

        public void writeinteger(string sectionname, string keyname, int value)

            writeprivateprofilestring(sectionname, keyname, value.tostring(), this.path);

        public bool readboolean(string sectionname, string keyname, bool defaultvalue)

            int temp = defaultvalue ? 1 : 0;

            int result = getprivateprofileint(sectionname, keyname, temp, this.path);

            return (result == 0 ? false : true);

        public void writeboolean(string sectionname, string keyname, bool value)

            string temp = value ? "1" : "0";

            writeprivateprofilestring(sectionname, keyname, temp, this.path);

        /// 删除这个项现有的字串。

        /// <param name="sectionname">要设置的项名或条目名。这个字串不区分大小写。</param>

        /// <param name="keyname">要删除的项名或条目名。这个字串不区分大小写。</param>

        public void deletekey(string sectionname,string keyname)

            writeprivateprofilestring(sectionname, keyname, null, this.path);

        /// 删除这个小节的所有设置项。

        /// <param name="sectionname">要删除的小节名。这个字串不区分大小写。</param>

        public void erasesection(string sectionname)

            writeprivateprofilestring(sectionname,null,null,this.path);

[dllimport("kernel32")]

public static extern int writeprivateprofilestring(string lpapplicationname, string lpkeyname, string lpstring, string lpfilename);

public static extern int getprivateprofileint(string lpapplicationname, string lpkeyname, int ndefault, string lpfilename);

public static extern int getprivateprofilestring(string lpapplicationname, string lpkeyname, string lpdefault, stringbuilder lpreturnedstring, int nsize, string lpfilename);

    }

***************************************************

// 初始化des加密的密钥和一个随机的、8比特的初始化向量(iv)

private byte[] key_8 = {0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef};

private byte[] iv_8 = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef};

/// <summary>

/// des加密字符串

/// </summary>

/// <param name="encryptstring">待加密的字符串</param>

/// <param name="rgbkey">加密密钥,要求为8位</param>

/// <param name="rgbiv">密钥向量</param>

/// <returns>加密成功返回加密后的字符串,失败返回源字符串</returns>

private string des_encrypt(string encryptstring, byte[] rgbkey, byte[] rgbiv)

{

try

byte[] inputbytearray = encoding.utf8.getbytes(encryptstring);

descryptoserviceprovider dcsp = new descryptoserviceprovider();

memorystream mstream = new memorystream();

cryptostream cstream = new cryptostream(mstream, dcsp.createencryptor(rgbkey, rgbiv), cryptostreammode.write);

cstream.write(inputbytearray, 0, inputbytearray.length);

cstream.flushfinalblock();

return convert.tobase64string(mstream.toarray());

}

catch

return encryptstring;

/// des解密字符串

/// <param name="decryptstring">待解密的字符串</param>

/// <param name="rgbkey">解密密钥,要求为8位,和加密密钥相同</param>

/// <returns>解密成功返回解密后的字符串,失败返源字符串</returns>

private string des_decrypt(string decryptstring, byte[] rgbkey, byte[] rgbiv)

byte[] inputbytearray = convert.frombase64string(decryptstring);

cryptostream cstream = new cryptostream(mstream, dcsp.createdecryptor(rgbkey, rgbiv), cryptostreammode.write);

return encoding.utf8.getstring(mstream.toarray());

return decryptstring;