Reading Configuration Files Without Using Win32

A C# Configuration File Reader that doesn't use the Win32 API functions.


Environment: .Net, C#

This is just a small class to handle configuration files. There are several other classes like this one, but they all use the GetPrivateProfileString()/SetPrivateProfileString() family of functions from the Win32 API.

If you check the documentation for those API, you'll notice that they are provided merely for compatability with Win16 applications. It's been quite some time since anyone wrote Win16 applications. (At least, I hope so.) You can find a C# class that uses those API here, using Interop. I don't like to use compatability functions; Microsoft is usually good with compatability, but still... and when you add Interop to the mess, I decided to do it on my own.

So I wrote a class that does it for me, without using Interop. It uses the same syntax as all INI files for Windows, and it supports sections and section-less keys.

Configuration conf =
 new Configuration(new System.IO.StreamReader("Configuration.ini"));
string UserName = conf.GetValue("User");
string HomePage = conf.GetValue("Internet_Data","Home_Page");

conf.SetValue( "User_Information", 

Pretty simple, isn't it? Now, it's not XML, and it doesn't have hype all over it, but it's small, efficent, and allows data hiding. If you want to switch the back end from an INI file to xn XML file, it's just a matter of changing the Parse() & Save() methods. The code is well commented, you shouldn't have any trouble with it. If you do have problems, I'll be glad to hear about them.


Download demo project - 5.67 Kb
Download source - 3.61 Kb


  • Slick and Simple

    Posted by callum_bell on 03/04/2004 07:22pm

    Very nice, just what I needed.

  • remove functions

    Posted by Legacy on 02/21/2003 12:00am

    Originally posted by: Lee

    how about this:

    public void RemoveValue(string Key, string ValueName)
    System.Collections.Hashtable KeyTable = (System.Collections.Hashtable)Keys[Key];
    throw new Exceptions.ConfigurationKeyDoesntExist();

    public void RemoveValue(string ValueName)

    public void RemoveKey(string Key)
    System.Collections.Hashtable KeyTable = (System.Collections.Hashtable)Keys[Key];
    throw new Exceptions.KeyDoesntExistException();

    hope it helps,

    - Lee

  • Nice Function

    Posted by Legacy on 11/20/2002 12:00am

    Originally posted by: Robert

    Worked well for me..

  • Delete Keys

    Posted by Legacy on 10/12/2002 12:00am

    Originally posted by: DB

    It would be nice if there was a delete function for keys and name pair values.

    Kinda like:

    void SetValue(string Key, string ValueName, string Value)

    But like:
    void RemoveValue(string Key)

    Where if only the key was provided then the entire key would be removed including ValueNames and it's Values.

    void RemoveValue(string Key, string ValueName)

    If the ValueName was provided with the key then just the ValueName would be removed within the key.

  • Log File System for multithreaded application

    Posted by Legacy on 07/12/2002 12:00am

    Originally posted by: Ram Sharma

    Does anyone know how to write to a log file but make the 'write' thread safe? I am not sure how to synchronize the writing to log file from various threads.


Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Moving from an on-premises environment to Office 365 does not remove the need to plan for disruptions or reduce the business risk requirements for protecting email services. If anything, some risks increase with a move to the cloud. Read how to ease the transition every business faces if considering or already migrating to cloud email. This white paper discusses: Setting expectations when migrating to Office 365 Understanding the implications of relying solely on Exchange Online security Necessary archiving …

  • Anthony Christie, the Chief Marketing Officer for Level Communications, is responsible for customer experience, worldwide marketing and product management. In this informative asset, he shares his insights into why a private network connection to cloud-bases applications is the right decision for your enterprise. Download now to find out more.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date