I would also recommend you consider augmenting this system with one or more of these additional features:
- A default configuration file;
- Added: A database-resident collection of configuration settings; this would necessitate database connection information be in one of the other mechanisms on this list;
- Environment variables which override the default config file;
- A command line switch to specify an alternate configuration file, which overrides environment variables and default configuration file entries;
- Other command line switches which override any other settings.