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></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></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"></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>Building OLE DB Conformance Tests / .ini File Example. In: learn.microsoft.com. Abgerufen am 24. Juni 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</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: 3.1. Shell initialization files. In: Bash Guide for Beginners. The Linux Document Project (tldp.org), 27. Dezember 2008, abgerufen am 24. Juni 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</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"></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></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: How to access INI Files in C# .NET. (Blog) In: All about nothing – .NET C#, Oracle, SQL Server and all other stuff that gives live a sense. 11. September 2006, archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 20. November 2006 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)): „Sometimes you’ll find your self in a situation where you need to use outdated techniques in order to support outdated applications … That time you’ll recognize that .NET does not support INI Files anymore.“</ref><ref>GrantMeStrength: GetPrivateProfileString function (winbase.h) - Win32 apps. Abgerufen am 24. Juni 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Diese INI-Dateien sind Textdateien, die Schlüssel-Wert-Paare enthalten, die ggf. durch Abschnitte ({{Modul:Vorlage:lang}} Modul:Vorlage:lang:103: attempt to index field 'wikibase' (a nil value)) gegliedert werden.<ref>Was ist eine Initialisierungsdatei (INI)? In: lenovo.com. Abgerufen am 24. Juni 2026.</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"></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>Do standard Windows .ini files allow comments? Abgerufen am 17. Juni 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> - Kommentare dürfen nur auf separaten Zeilen (nicht hinter Abschnittsüberschriften oder Schlüsseln) stehen.
- Groß- und Kleinschreibung wird nicht unterschieden<ref>GrantMeStrength: GetPrivateProfileString function (winbase.h) - Win32 apps. In: Microsoft Developer Notes. Abgerufen am 17. Juni 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</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: WriteProfileSectionA function (winbase.h) - Win32 apps. Abgerufen am 24. Juni 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</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>Please explain VirtualStore for non-experts - Microsoft Q&A. Abgerufen am 24. Juni 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</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: Known Folders - Win32 apps. Abgerufen am 24. Juni 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref>jwmsft: KNOWNFOLDERID (Knownfolders.h) - Win32 apps. Abgerufen am 24. Juni 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</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>The 'Program Files' folder in different languages (Technical Article). Abgerufen am 24. Juni 2026.</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>PortableApps.com Platform Features | PortableApps.com. Abgerufen am 24. Juni 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref>Firefox Portable Download. In: Chip. </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: WIN.INI/registry is corrupted (Error 1955). In: learn.microsoft.com. Abgerufen am 24. Juni 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> INI hat keine genormte Spezifikation<ref>Lumina: Configuration File Formats: XML, TOML, JSON, YAML, and INI Explained. In: Medium. 9. Oktober 2025, abgerufen am 24. Juni 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</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>Chapter 7. Customizing Your Subversion Experience. In: VisualSVN. VisualSVN Software Ltd., abgerufen am 6. April 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)): „The Subversion runtime configuration area is a two-tiered hierarchy of option names and their values. Usually, this boils down to a special directory that contains configuration files (the first tier), which are just text files in standard INI format where “sections” provide the second tier. You can easily edit these files using your favorite text editor (such as Emacs or vi), and they contain directives read by the client to determine which of several optional behaviors the user prefers.“</ref>
- Der Network Manager unter Linux speichert die Profile im INI-ähnlichem-Format unter
/etc/NetworkManager/system-connections/<Verbindungs-Bezeichnung>.nmconnection<ref>Chapter 38. NetworkManager connection profiles in keyfile format. In: Red Hat Documentation – Red Hat Enterprise Linux. Red Hat, abgerufen am 6. April 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)): „The keyfile format is an INI-like configuration for network connections.“</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>Desktop entries. (Wiki) In: Arch Wiki. Arch Linux, abgerufen am 6. April 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)): „The format of desktop entries is similar to INI files.“</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>[[:Vorlage:Monospace]]. (Manpage) In: Linux manual page. man7.org, 15. August 2015, abgerufen am 6. April 2026 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)): „The configuration file format is based on INI.“</ref><ref>Andrijan Möcker: Gleichzeitige WireGuard-Verbindungen. In: Heise online. 14. Februar 2025.Vorlage:Abrufdatum; Zitat: „Das Open-Source-Projekt kommt als Docker-Container und bietet eine Weboberfläche, über die Sie komfortabel Peer-Profile erstellen und herunterladen oder als QR-Code weitergeben können.“.</ref>
Python[Bearbeiten]
Python nutzt für Module einen mit dem Dateinamen __init__.py standardisierten Initialisierungsskript.<ref>Michael Weigend: Pyhton Ge-packt. 8. Auflage. mitp-Verlag, 2020, ISBN 978-3-7475-0195-5, 15.5 Definition von Klassenbibliotheken, S. 324, Pakete (eingeschränkte Vorschau in der Google-BuchsucheSkriptfehler: Ein solches Modul „Vorlage:GoogleBook“ ist nicht vorhanden.): „… das Initialisierungsskript mit dem Namen Vorlage:Monospace… Das Initialisierungsskript ist notwendig, damit das Verzeichnis vom Laufzeitsystem als Paket erkannt wird.“</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>Mark Lutz, David Ascher: Einführung in Pyhton. 2. Auflage. O’Reilly, 2007, ISBN 978-3-89721-488-0, 17. Modul-Pakete, S. 294, Paket-Initialisierung (eingeschränkte Vorschau in der Google-BuchsucheSkriptfehler: Ein solches Modul „Vorlage:GoogleBook“ ist nicht vorhanden.): „Diese __init__.py-Dateien enthalten Python-Code wie ganz normale Moduldateien auch.
Wenn Pyhton zum ersten Mal ein Verzeichnis importiert, führt es automatisch den gesamten Code in der __init__.py-Datei dieses Verzeichnisses aus. Deswegen eigenen sich diese Dateien für Code, der einen Zustand initialisiert, den die Paketdateien benötigen. Ein Paket könnte seine Initialisierungsdatei z. B. dazu benutzen, benötigte Datendateien zu erstellen… Normalerweise sind __init__.py-Dateien nicht dafür gedacht, direkt ausgeführt zu werden, sondern sie werden automatisch während eines Imports ausgeführt…“</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 />