What I said about Wordpad using an XML Format:
Somewhat incorrect.
It still defaults as .rtf, however, it has the option of saving as OOXML Document.
As for the registry being efficient:
I think its fine for Windows, however, if a program just puts the ini file in its own directory under "Program Files", thats when I would be happy. Its horrible when they end up all over in system folder, and windows, and under other ini files.
My biggest problem with the registry is the sheer fact that if part of it is lost, it can render an even larger part useless, which makes it more susceptible to corruption.
Also, its loaded at startup, and on older slower computers, that can take a while.
Programs are not allowed to write to the "program files" directory or any subdirectory from Vista onwards. They can read from it, and writes will succeed after a UAC prompt.
if part of the registry is lost- the computer won't boot. there is NTUSER and NTSYSTEM (hkey_classes_root is really just an alias to somewhere in HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE (can't recall exactly where) and HKEY_CURRENT_USER is simply an alias to a subkey of HKEY_USERS\ depending on the current user's SID.
I've partly solved this settings problem with my in-development settings library. I found it a major PITA myself to save and read from the registry, since I wanted some more user-configurable stuff.
So, it allows for XML,INI, and Registry, and they can be ordered in any way. IE: load a value via the library, and it will check the registry first, if the value doesn't exist, try loading XML, if that doesn't work, try INI, and only then go to default. Writing on the other hand would write to all locations.
Of course they can even be removed completely- meaning for example just using XML is an option as well.
And the only code change from all three would be during initialization...