Mhm, ich fahre bei solchen Sachen meistens 4-gleisig, je nach Anwendung
1) Der Installer (und zwar
nur der Installer) schreibt den Installationspfad in die Registry. Das hilft beim leichteren Auffinden des Programms für einen Updater oder bei einem Support-Anruf, wenn der Kunde keine Ahnung hat, wo das Pogramm eigentlich liegt und / oder sein Icon / die Programmgruppe gelöscht hat etc.
2) "Normale" Programm-Einstellungen liegen in einer kleinen embedded Firebird-Datenbank (Anm.: ich liebe diese Datenbank!) im AppData-Verzeichnis und können vom User im Programm selbst über einen Settings-Bildschirm geändert werden.
Ebenso liegen in der Datenbank interne Einstellungen, die nur der Entwickler selbst, das Installationsprogramm oder ein Updater ändern muss.
3) Erweiterte Programm-Einstellungen für den Benutzer, die man teilweise nur zu Endpoint-Debug-Zwecken braucht oder vom End-Anwender nur einmalig umgeändert werden müssen, liegen in einer kleinen INI-Datei im AppData-Verzeichnis der Applikation.
4) Hat die Applikation eine Lua-Schnittstelle, liegen die Config-Einstellungen auch teilweise in einem Lua-Table.
Generell bin ich auch, aufgrund der Einfachheit, ein Freund der guten alten INI-Datei,
XML hin oder her. INI's kann jeder Endanwender im Support-Fall leicht selbst editieren und muss sich nicht durch irgendwelche Registry-Einträge hangeln. Wichtig ist hier nur, dass die INI-Datei nicht mehr, wie es bei vielen jahrelang usus war, im Programm-Verzeichnis liegt, sondern im zugehörigen AppData-Verzeichnis. Hier hilft es auch, eine Verknüpfung zur INI-Datei mit dem Installationsprogramm im eigentlichen Applikations-Verzeichnis anzulegen, damit der Endanwender sich wiederum nicht zu den AppData-Verzeichnissen hangeln muss.
Ausserdem ein Vorteil von INIs (und auch XMLs): Man kann durch schlichtes Löschen der INI-Datei das Programm so auch leicht auf "Factory Reset" setzen, falls ein Endanwender es irgendwie geschafft hat, irgendwelche Form-Grössen oder Positionen völlig zu zerschiessen etc. und auch nicht editieren will
XML ist zwar generell die "schönere" und modernere Variante der INI, aber ich habe es schon oft erlebt, dass ein Endkunde die
XML mit einem schwindligen Editor geöffnet und editiert hat, der dann die UTF8-Kodierung der
XML beim speichern komplett zerstört hat.
Deswegen nutze ich
XML meist nur für interne Zwecke, Import / Export und dergleichen. Aber nie für Dinge, die der Endanwender auch mal mit einem Editor ändern muss.