K0D3R K0D3R - 1 year ago 149
Ini Question

C#: What is the easiest way to delete a Section and its Keys from an INI

I have an INI file that consists of multiple Sections, and a single key named "Path". Everything in the INI is loaded into a DataGridView on Load for manipulating the contents of the file.

INI Example:
[First Entry]
Path=C:\test1.txt
[Second Entry]
Path=C:\test2.txt
[Third Entry]
Path=C:\test3.text


What would be the easiest possible method of deleting [Second Entry] that wouldn't wipe out the entire file?

Here's what I'm working with at the moment for Writing new info to the file:

INI Class:
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string fileName);

public void Write(string section, string key, string value)
{
WritePrivateProfileString(section, key, value.ToLower(), path);
}

Form Button:
private void WriteINI()
{
myINI.Write(txtName.Text, "Path", txtPath.Text);
ReadINI();
}

Answer Source

Using WritePrivateProfileString method you can delete the entire section by passing null value for lpKeyName to method this way:

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool WritePrivateProfileString(
       string lpAppName, string lpKeyName, string lpString,string lpFileName);

private void button1_Click(object sender, EventArgs e)
{
    WritePrivateProfileString("Second Entry", null, null, @"d:\test.ini");
}

lpKeyName
The name of the key to be associated with a string. If the key does not exist in the specified section, it is created. If this parameter is NULL, the entire section, including all entries within the section, is deleted.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download