Zum Inhalt springen

Initialisierungsdatei

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von INI-Format)

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.[1]

Grundsätzliches

[Bearbeiten | Quelltext 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).[2] 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.[3] 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.[4]

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.[5]

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,[6] wurde die Initialisierungsdatei WIN.INI dafür verwendet, die in der Systemsteuerung angepassten Benutzereinstellungen für den nächsten Windows-Start zu speichern.[7] 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.[8][9]

Diese INI-Dateien sind Textdateien, die Schlüssel-Wert-Paare enthalten, die ggf. durch Abschnitte (englisch section) gegliedert werden.[10]

Die Initialisierungsdaten werden zeilenweise abgelegt: ein Gleichheitszeichen trennt den Schlüssel von seinem Wert.[11]

Schlüssel=Wert

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.

[Abschnitt1]
Schlüssel=Wert
[Abschnitt2]
Schlüssel=Wert
Schlüssel2=Wert

Außerdem erlaubt das Dateiformat Kommentarzeilen, diese beginnen mit einem Semikolon.[3]

; Kommentar

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.[12]
  • Kommentare dürfen nur auf separaten Zeilen (nicht hinter Abschnittsüberschriften oder Schlüsseln) stehen.
  • Groß- und Kleinschreibung wird nicht unterschieden[13]
  • 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[14]
Beispiel einer benutzerfreundlichen Auswahlmöglichkeit zur Festlegung des Speicherortes

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.[15] 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.[16][17]

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“.[18] 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.[19][20]

Die WIN.INI wurde durch die Registrierungsdatenbank abgelöst, weshalb es Fehlermeldungen gibt, in denen sich auf beide gleichzeitig bezogen wird.[21] INI hat keine genormte Spezifikation[22] 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.

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.[23]
  • Der Network Manager unter Linux speichert die Profile im INI-ähnlichem-Format unter /etc/NetworkManager/system-connections/<Verbindungs-Bezeichnung>.nmconnection[24]
  • Die für Unix-artige Systeme von freedesktop.org standardisierten XDG-Desktop-Programmverknüpfungen mit der Dateiendung .desktop sind in einem Format, das INI ähnlich ist.[25]
  • 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.[26][27]

Python nutzt für Module einen mit dem Dateinamen __init__.py standardisierten Initialisierungsskript.[28] 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.[29]

  • 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 | Quelltext bearbeiten]
  1. ↑ Charles Petzold: PM Functions in Non-PM Programs – As a rule, Presentation Manager functions can be called only from within PM programs. as INISHOW.EXE demonstrates, however, rules can sometimes be broken. In: PC Magazine. Band 8, Nr. 11. Ziff Davis, 13. Juni 1989, S. 343 ff., But maybe … (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “First, some background. Many applications need to store program initialization or configuration data.”
  2. ↑ Charles Petzold: PM Functions in Non-PM Programs – As a rule, Presentation Manager functions can be called only from within PM programs. as INISHOW.EXE demonstrates, however, rules can sometimes be broken. In: PC Magazine. Band 8, Nr. 11. Ziff Davis, 13. Juni 1989, S. 343 ff., WIN.INI and OS2.INI (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “The WIN.INI file created by Microsoft Windows in the \WINDOWS directory is in many ways similar to OS2.INI, and the functions that Windows provides applications to use WIN.INI are similar to the Presentation Manager functions. The most significant difference is that WIN.INI is an editable ASCII file, while OS2.INI is a binary file. … directly editing the OS2.INI file is not possible, though much of the system information in OS2.INI can be changed by using the Presentation Manager Control Panel program. … Programs can store information in OS2.INI only through PM functions, such as WinWriteProfileData.”
  3. 1 2 William S. Hall: Getting More Out of Windows. In: PC Magazine. Band 8, Nr. 11. Ziff Davis, 13. Juni 1989, S. 385 ff., WIN.INI (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “As you can see, a WIN.INI entry is fairly readable. That doesn't necessarily mean it makes a lot of sense—it's always wise to look at the relevant documentation if the meaning of a particular field isn't clear. Comments can be placed in WIN.INI by using a semicolon. … In some older versions of Windowsm placing an = or bracketed text in a commented line could cause problems. Despite the semicolon, the line was often interpreted as a section name or as keyname=value. It's probably a good idea to avoid the use of =, [, or ] in a comment.”
  4. ↑ Building OLE DB Conformance Tests / .ini File Example. In: learn.microsoft.com. Abgerufen am 24. Juni 2026 (amerikanisches Englisch).
  5. ↑ 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 (englisch).
  6. ↑ Mark Minasi, Eric Christiansen, Kristina Shapar: The Expert Guide to Windows 98. Sybex, 1998, ISBN 978-0-7821-1974-9, S. 128, Contents of .INI Files (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “It's hard to draw a clear and distinct line between what SYSTEM.INI and WIN.INI do, as WIN.INI has existed since the Windows 1.0 days and SYSTEM.INI has only been around since version 3.0. Although it's tempting to say that SYSTEM.INI controls the hardware configuration of Windows, and WIN.INI contains user preferences and software configuration, that's not 100 percent accurate.”
  7. ↑ Paul W. Ross: The Handbook of Software for Engineers and Scientists. CRC Press, 1996, ISBN 0-8493-2530-7, 2.7 Customizing the Windows Environment, S. 28 ff., Modifying the Initialization Files (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “Each time you start Windows, a set of files is read informing Windows of how to set various configuration options.”
  8. ↑ 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 Original (nicht mehr online verfügbar) am 20. November 2006 (englisch): „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.“
  9. ↑ GrantMeStrength: GetPrivateProfileString function (winbase.h) - Win32 apps. Abgerufen am 24. Juni 2026 (amerikanisches Englisch).
  10. ↑ Was ist eine Initialisierungsdatei (INI)? In: lenovo.com. Abgerufen am 24. Juni 2026.
  11. ↑ Paul W. Ross: The Handbook of Software for Engineers and Scientists. CRC Press, 1996, ISBN 0-8493-2530-7, 2.7 Customizing the Windows Environment, S. 28 ff., Modifying the Initialization Files (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “Windows initialization files are ASCII text files, and have the following format:
    [section name]
    keyname=value
    ”
  12. ↑ Do standard Windows .ini files allow comments? Abgerufen am 17. Juni 2026 (englisch).
  13. ↑ GrantMeStrength: GetPrivateProfileString function (winbase.h) - Win32 apps. In: Microsoft Developer Notes. Abgerufen am 17. Juni 2026 (amerikanisches Englisch).
  14. ↑ GrantMeStrength: WriteProfileSectionA function (winbase.h) - Win32 apps. Abgerufen am 24. Juni 2026 (amerikanisches Englisch).
  15. ↑ Please explain VirtualStore for non-experts - Microsoft Q&A. Abgerufen am 24. Juni 2026 (en-ie).
  16. ↑ jwmsft: Known Folders - Win32 apps. Abgerufen am 24. Juni 2026 (amerikanisches Englisch).
  17. ↑ jwmsft: KNOWNFOLDERID (Knownfolders.h) - Win32 apps. Abgerufen am 24. Juni 2026 (amerikanisches Englisch).
  18. ↑ The 'Program Files' folder in different languages (Technical Article). Abgerufen am 24. Juni 2026.
  19. ↑ PortableApps.com Platform Features | PortableApps.com. Abgerufen am 24. Juni 2026 (englisch).
  20. ↑ Firefox Portable Download. In: Chip.
  21. ↑ Archiveddocs: WIN.INI/registry is corrupted (Error 1955). In: learn.microsoft.com. Abgerufen am 24. Juni 2026 (amerikanisches Englisch).
  22. ↑ Lumina: Configuration File Formats: XML, TOML, JSON, YAML, and INI Explained. In: Medium. 9. Oktober 2025, abgerufen am 24. Juni 2026 (englisch).
  23. ↑ Chapter 7. Customizing Your Subversion Experience. In: VisualSVN. VisualSVN Software Ltd., abgerufen am 6. April 2026 (englisch): „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.“
  24. ↑ Chapter 38. NetworkManager connection profiles in keyfile format. In: Red Hat Documentation – Red Hat Enterprise Linux. Red Hat, abgerufen am 6. April 2026 (englisch): „The keyfile format is an INI-like configuration for network connections.“
  25. ↑ Desktop entries. (Wiki) In: Arch Wiki. Arch Linux, abgerufen am 6. April 2026 (englisch): „The format of desktop entries is similar to INI files.“
  26. ↑ wg(8). (Manpage) In: Linux manual page. man7.org, 15. August 2015, abgerufen am 6. April 2026 (englisch): „The configuration file format is based on INI.“
  27. ↑ Andrijan Möcker: Gleichzeitige WireGuard-Verbindungen. In: Heise online. 14. Februar 2025. Abgerufen am 6. April 2026.; 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.“.
  28. ↑ 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-Buchsuche): „… das Initialisierungsskript mit dem Namen __init__.py… Das Initialisierungsskript ist notwendig, damit das Verzeichnis vom Laufzeitsystem als Paket erkannt wird.“
  29. ↑ 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-Buchsuche): „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…“