Eine Initialisierungsdatei (kurz INI-Datei) ist eine Textdatei, die Schlüssel-Wert-Paare enthält, die ggf. durch Sektionen gegliedert werden. Initialisierungsdateien werden typischerweise von Microsoft-Windows-Anwendungen als Konfigurationsdatei genutzt. Bis zur Einführung der Registrierungsdatenbank mit Microsoft Windows NT 3.1 war das INI-Format das einzige Dateiformat zur Speicherung von Programm-Konfigurationen, das durch die WinAPI unterstützt wurde. Als einfach aufgebautes und zugleich von Menschen leicht lesbares Format ist es auch betriebssystemübergreifend verbreitet, um Einstellungen von Programmen dauerhaft zu speichern.
Aufbau
Die Initialisierungsdaten werden zeilenweise abgelegt: ein Gleichheitszeichen trennt den Schlüssel von seinem Wert.
Schlüssel=Wert
Um Schlüssel in sog. Sektionen zu gruppieren, ist eine (pro Datei eindeutige) Bezeichnung in eckigen Klammern über der jeweiligen Sektion anzugeben. Benannte Sektionen sind nicht verpflichtend, je Sektion müssen die Schlüssel eindeutig sein.
[Sektion1]
Schlüssel=Wert
[Sektion2]
Schlüssel=Wert
Schlüssel2=Wert
Außerdem erlaubt das Dateiformat Kommentarzeilen, diese beginnen mit einem Semikolon.
; Kommentar
Beim Erstellen einer INI-Datei sind folgende Regeln zu beachten:
- Jede Sektion darf nur einmal vorkommen.
- Jeder Schlüssel darf nur einmal je Sektion vorkommen.
- Auf Werte wird mittels Sektion und Schlüssel zugegriffen.
- Kommentare werden mit einem „;“ eingeleitet.
- Kommentare dürfen nur auf separaten Zeilen (nicht hinter Sektionsüberschriften oder Schlüsseln) stehen.
- Leerzeichen und Anführungszeichen werden von verschiedenen Programmen teilweise unterschiedlich behandelt.
- Groß- und Kleinschreibung wird nicht unterschieden
- Aussagenlogik: False und No werden als 0, True und Yes als 1 interpretiert.
Es gibt Dateien mit nahezu demselben Aufbau, die sich lediglich durch folgende Merkmale unterscheiden:
- Fehlende oder andere Dateiendung (z. B. conf und cfg)
- Einleitung von Kommentaren mit einem anderen Zeichen (z. B. „#“).
Ein Beispiel für eine solche Variation findet sich in den Konfigurationsdateien für Subversion-Repositories.
Alternative Formate
Speicherort
In früheren Windows-Ausgaben (mit der Einführung von NTFS) existierten zwei alternative/konkurrierende Philosophien für den Standard-Dateipfad zur INI-Ablage, wobei auf der einen Seite die Benutzerfreundlichkeit und auf der anderen Seite die Sicherheit im Vordergrund stand.
Im Folgenden am Beispiel von Windows XP:
\Dokumente und Einstellungen\<Benutzername>\Anwendungsdaten\<Programmname>\
(allgemein, über eine sogenannte Umgebungsvariable:%APPDATA%\<Programmname>
; englisch:\Documents and Settings\<Benutzername>\Application Data\<Programmname>\
)\Programme\<Programmname>\
(allgemein:%PROGRAMFILES%\<Programmname>
; englisch:\Program Files\<Programmname>\
)
Ab Windows Vista wird die Veränderung des Programme-Ordners durch Benutzer mit eingeschränkten Rechten (oder Nicht-Administratoren) standardmäßig von der Benutzerkontensteuerung blockiert, wovon auch dort gespeicherte INI-Dateien betroffen sind. Manche Programme vergeben daher bei der Installation sämtliche Rechte für die installierten Dateien an den Benutzer „Jeder“. In diesen Windows-Versionen existieren ggf. zudem automatisch erzeugte Kopien der INI-Dateien im Schattenverzeichnis $USERDIR$\AppData\Local\VirtualStore\Windows\
.
Anwendungen, die ihre Einstellungen in ihrem eigenen Programmordner ablegen (beispielsweise %PROGRAMFILES%\<Programmname>\
oder %UserProfile%\Desktop\<Programmname>\
), bieten den Vorteil, dass sie leichter auf einen anderen Rechner übertragbar sind, haben aber den Nachteil, dass sich alle Benutzer der Anwendung auf einem Rechner diese Einstellungen teilen. Solche Anwendungen werden auch als portabel bezeichnet. Voraussetzung zum Ändern dieser Einstellungen ist, dass der Benutzer Schreibrechte auf die INI-Datei (und den Programmordner) besitzt.
Weblinks
- GetPrivateProfileString: Microsoft Windows API-Funktion zum Auslesen von Werten aus einer INI-Datei.
- GetPrivateProfileSection: Microsoft Windows API-Funktion zum Auslesen von allen Schlüsseln und Werten aus einer Sektion der INI-Datei.
- GetPrivateProfileSectionNames: Microsoft Windows API-Funktion zum Auslesen von Sektionen aus einer INI-Datei.