K0D3R K0D3R - 4 months ago 22
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

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.