Initialisierungsdatei
Eine Initialisierungsdatei ist eine Datei, die einen Zustand beim Start einer Software herstellt. Häufig werden Konfigurationsdateien oder Skipte als Initialisierungsdateien genutzt. Die darin enthaltenen Einstellungen erlauben einen benutzerdefinierten Start.<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref>
Grundsätzliches[Bearbeiten]
Initialisierungsdateien folgen keinem klar definierten Format, denn sie sind stark von der jeweiligen Umgebung, z. B. dem Betriebssystem, und der spezifischen Software abhängig. Technisch sind Initialisierungsdateien meist Textdateien, das heißt, sie enthalten reinen Text, der mit jedem Texteditor bearbeitet und daher auch verändert werden kann. Es gibt aber auch Initialisierungsdateien, die in einem binären Format gespeichert sind, wie beispielsweise Dateien mit der Endung .ini von OS/2 (1987).<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> Manchmal gibt es ein eigens zur Bearbeitung der gespeicherten Einstellungen vorgesehenes Programm, mit dessen Hilfe sich die Initialisierungsdatei(en) bearbeiten lassen, manchmal bietet das Hauptprogramm selbst die Möglichkeit dazu.
Von einigen Programmen wird ein an das INI-Format von Windows angelehntes Format für Initialisierungsdateien genutzt. Dabei handelt es sich um ein einfach aufgebautes und zugleich von Menschen leicht lesbares Dateiformat. Die genaue Konvention, beispielsweise für Kommentare, variiert jedoch und so ist auch die Verarbeitung durch die Software im Detail unterschiedlich. Auch sind die Bezeichnungen der Einstellungen keineswegs selbsterklärend oder aussagekräftig.<ref name="PC_Magazin-getting_more_out_of_windows-winini-comments">Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> Außerdem existieren INI-Dateien (Textdateien mit der Endung .ini), die sich überhaupt nicht an dieselbe Konvention halten, beispielsweise Microsoft OLE DB (1996): diese enthalten zwar ebenfalls reinen Text, allerdings in einem unterschiedlichen Format.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Beispiele[Bearbeiten]
Unix[Bearbeiten]
Viele Teile von Unix verwenden globale Initialisierungsdateien in /etc sowie benutzerspezifische im Benutzerverzeichnis, um nach dem Start einen initialen Zustand herzustellen. Ein Beispiel dafür ist die Datei /etc/profile, ein Shellskript, der von der Unix-Shell beim Start ausgeführt wird.<ref>Machtelt Garrels: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. The Linux Document Project (tldp.org), Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Windows[Bearbeiten]
Unter MS-DOS bzw. PC DOS, sowie dazu kompatiblem DOS, und Windows etablierten sich INI-Datei, abgeleitet von der im 8.3-Schema genutzten Dateinamenserweiterung .INI für „Initialisierung“. INI-Dateien werden von diverser Software genutzt, nicht nur vom Betriebssystem. Mit der ersten Version von Windows, Windows 1.0,<ref name="expert_guide_to_win98_contents_of_ini_files">Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> wurde die Initialisierungsdatei WIN.INI dafür verwendet, die in der Systemsteuerung angepassten Benutzereinstellungen für den nächsten Windows-Start zu speichern.<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> In der WinAPI ist eine Schnittstelle zum Lesen und Schreiben von Initialisierungsdaten im INI-Format enthalten. Viele Windows-Programme übernahmen daher das Format dieser INI-Dateien. In späteren Windows-NT-Versionen ist die Schnittstelle zwar noch vorhanden, dient aber nur noch der Kompatibilität mit 16-Bit-Anwendungen.<ref>Gerhard Stephan: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] (Blog) In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 2006-11-20 (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref><ref>GrantMeStrength: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Diese INI-Dateien sind Textdateien, die Schlüssel-Wert-Paare enthalten, die ggf. durch Abschnitte (Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.) gegliedert werden.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Aufbau[Bearbeiten]
Die Initialisierungsdaten werden zeilenweise abgelegt: ein Gleichheitszeichen trennt den Schlüssel von seinem Wert.<ref name="Handbook_of_Software_for_Engineers_and_Scientists-modifying_the_initialization_files">Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> <syntaxhighlight lang="ini"> Schlüssel=Wert </syntaxhighlight>
Um Schlüssel in sog. Abschnitte zu gruppieren, ist eine (pro Datei eindeutige) Bezeichnung in eckigen Klammern über dem jeweiligen Abschnitt anzugeben. Benannte Abschnitte sind nicht verpflichtend, je Abschnitt müssen die Schlüssel eindeutig sein.
<syntaxhighlight lang="ini"> [Abschnitt1] Schlüssel=Wert [Abschnitt2] Schlüssel=Wert Schlüssel2=Wert </syntaxhighlight>
Außerdem erlaubt das Dateiformat Kommentarzeilen, diese beginnen mit einem Semikolon.<ref name="PC_Magazin-getting_more_out_of_windows-winini-comments" />
<syntaxhighlight lang="ini">
- Kommentar
</syntaxhighlight>
Regeln[Bearbeiten]
Beim Erstellen und Bearbeiten einer Windows-API-INI-Datei gelten folgende Regeln:
- Jeder Abschnitt darf nur einmal vorkommen.
- Jeder Schlüssel darf nur einmal je Abschnitt vorkommen.
- Auf Werte wird mittels Abschnitt und Schlüssel zugegriffen.
- Kommentare werden mit einem
;eingeleitet.#ist im Microsoft-Windows-Format kein Kommentar.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> - Kommentare dürfen nur auf separaten Zeilen (nicht hinter Abschnittsüberschriften oder Schlüsseln) stehen.
- Groß- und Kleinschreibung wird nicht unterschieden<ref>GrantMeStrength: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
- Unterstützt werden die ausschließlich die Kodierungen der aktiven Windows Codepage bzw. der Untermenge ASCII (ohne BOM) und UTF-16LE mit BOM. UTF-8 wird nicht unterstützt und der UTF-8 BOM wird als Schriftzeichen gelesen, was zu Fehlern führt. UTF-16LE wird hingegen ohne BOM nicht erkannt und als ASCII gelesen, was ebenso nicht funktioniert.
- Die Implementierung hat Begrenzungen für die höchstmögliche Dateigröße. z. B. 64 KiB in einem Abschnitt<ref>GrantMeStrength: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Speicherort[Bearbeiten]
Unter Windows 9x legten Programme ihre INI‑Dateien meist direkt im eigenen Installationsordner ab, weil es weder Benutzertrennung noch Zugriffsrechte gab. Mit Windows 2000 wollte Microsoft dieses Modell ablösen. Programme sollten nicht mehr in Program Files schreiben, sondern benutzerspezifische Daten in %APPDATA% bzw. %LOCALAPPDATA% und systemweite Einstellungen bevorzugt in der Registrierungsdatenbank speichern. XP bot die neue Struktur an, erzwang sie aber nicht, weil die meisten Nutzer Administratoren waren und viele Programme weiterhin wie unter Win9x arbeiteten.
Mit Windows Vista wurde diese Trennung technisch durchgesetzt: Schreibzugriffe in Program Files sind für normale Benutzer blockiert, und inkompatible Altprogramme werden über die UAC‑Virtualisierung nach %LOCALAPPDATA%\VirtualStore umgeleitet.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Gleichzeitig ersetzte Microsoft den alten „All Users\Application Data“-Pfad durch den neuen Ordner C:\ProgramData, der als zentraler, systemweiter Speicherort für gemeinsam genutzte Anwendungsdaten dient und damit die Struktur aus Benutzerprofil, Program Files und Registry klar ergänzt.<ref>jwmsft: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref><ref>jwmsft: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Unter Windows XP waren alle genannten Pfade vollständig lokalisiert, weil XP die Ordner physisch in der jeweiligen Sprache angelegt hat. Aus „Documents and Settings“ wurde „Dokumente und Einstellungen“, aus „Application Data“ wurde „Anwendungsdaten“, und auch „Program Files“ erschien als „Programme“.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Erst ab Windows Vista wurden die physischen Ordnernamen vereinheitlicht und nicht mehr übersetzt. Vista zeigte zwar weiterhin lokalisierte Anzeigenamen im Windows-Explorer, aber die tatsächlichen Pfade blieben englisch (z. B. C:\ProgramData, C:\Users, C:\Program Files).
Abkürzungen des Dateipfads durch einen %Namen% in Prozentzeichen nennt man Umgebungsvariable.
Anwendungen, die ihre Einstellungen in ihrem eigenen Programmordner ablegen, bieten den Vorteil, dass sie leichter auf einen anderen Rechner übertragbar sind oder direkt auf entfernbaren Speichermedien wie USB-Sticks an verschiedenen Rechnern genutzt werden können. Solche Anwendungen werden im Windows-Umfeld manchmal als portabel bezeichnet.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref><ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
Nachfolge[Bearbeiten]
Die WIN.INI wurde durch die Registrierungsdatenbank abgelöst, weshalb es Fehlermeldungen gibt, in denen sich auf beide gleichzeitig bezogen wird.<ref>Archiveddocs: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> INI hat keine genormte Spezifikation<ref>Lumina: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> und seine Implementierung in der Windows-API ist auch nicht gut dokumentiert. Heute noch verwenden viele Programme auf allen Betriebssystemen, die von Microsoft popularisierte Dateiendung .ini. Meistens wird der Inhalt jedoch von einer plattformunabhängigen Bibliothek gelesen, die meist anderen Regeln für ein allgemeineres Konfigurationsdateiformat folgt.
Verbreitung[Bearbeiten]
Aufgrund der Verwendung der Endung .ini durch Windows, dessen Verbreitung und des Mangels eines formellen Namens für solche Konfigurationsdateien, wird sich oft auf „INI-ähnliche-Dateien“ bezogen, obwohl die Notation älter ist und nicht von Microsoft erfunden wurde.
Einige Beispiele:
- Die Konfigurationsdateien für Subversion-Repositories nutzen tatsächlich das INI-Format.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. VisualSVN Software Ltd. ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
- Der Network Manager unter Linux speichert die Profile im INI-ähnlichem-Format unter
/etc/NetworkManager/system-connections/<Verbindungs-Bezeichnung>.nmconnection<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Red Hat ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> - Die für Unix-artige Systeme von freedesktop.org standardisierten XDG-Desktop-Programmverknüpfungen mit der Dateiendung
.desktopsind in einem Format, das INI ähnlich ist.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (Wiki) In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Arch Linux ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> - Die Daten von WireGuard zum Einrichten einer VPN-Verbindung verwenden ein INI-basiertes Format. Die Daten können zwar auch manuell eingegeben werden, meist bieten WireGuard-Clients jedoch das direkte Laden der Daten aus einer Datei, die Übertragung per Kopieren und Einfügen oder das Einlesen per QR-Code.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (Manpage) In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. man7.org, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden. ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.): Skriptfehler: Ein solches Modul „Text“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref><ref>Vorlage:Heise online</ref>
Python[Bearbeiten]
Python nutzt für Module einen mit dem Dateinamen __init__.py standardisierten Initialisierungsskript.<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> Dieser ist ein regulärer Python-Skript, der jedoch nicht für die manuelle Ausführung gedacht ist, sondern für die Initialierung des jeweiligen Moduls durch Python selbst.<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref>
Weblinks[Bearbeiten]
- 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 einem Abschnitt der INI-Datei.
- GetPrivateProfileSectionNames: Microsoft Windows API-Funktion zum Auslesen von Abschnitte aus einer INI-Datei.
- simpleini – eine plattformübergreifende C++-Bibliothek, die ein einfaches API zum Lesen und Schreiben von Konfigurationsdateien im INI-Format bietet
- mc.ext.ini – Beispiel für eine moderne INI-Datei im Windows-INI-Format: die „Extension“-Datei des Midnight Commander
Einzelnachweise[Bearbeiten]
<references />