Initialisierungsdatei

Konfigurationsdatei in MS-DOS und Windows

Eine Initialisierungsdatei bzw. kurz INI-Datei, abgeleitet von der meist im 8.3-Schema genutzte Dateinamenserweiterung .INI, ist eine Konfigurationsdatei für diverse Software, die die darin gespeicherten Einstellungen für den benutzerdefinierten Start verwendet.[1] Mit der ersten Version von Microsoft Windows, Windows 1.0,[2] wurde die Initialisierungsdatei WIN.INI dafür verwendet, die in der Systemsteuerung angepassten Benutzereinstellungen für den nächsten Windows-Start zu speichern.[3] Dieses Windows-INI-Format oder ein daran angelehntes Textformat wurde später nicht nur von Windows-Anwendungen übernommen, es wird auch von diversen Programmen betriebssystemübergreifend genutzt, u. a. um Einstellungen dauerhaft zu speichern.

Dem Windows-Standard folgend sind INI-Dateien meist einfache Textdateien, zunächst im ASCII-Zeichensatz, die Schlüssel-Wert-Paare enthalten, die ggf. durch Sektionen gegliedert werden.[4] Da jedes Programm eigene INI-Dateien definieren kann, entspricht das genaue Format jedoch möglicherweise nicht dem von Microsoft vorgegebenen Standard. Beispielsweise nutzt OS/2 binäre INI-Dateien.[5]

Bis zur Einführung der Registrierungsdatenbank mit Windows NT 3.1 war die WIN.INI die einzige Initialisierungsdatei zur Speicherung von Programm-Konfigurationen, was durch die WinAPI unterstützt wurde. In späteren Windows-NT-Versionen ist der API-Zugriff zwar noch vorhanden, wird aber als veraltet angesehen.[6]

Das INI-Format von Windows gilt als einfach aufgebautes und zugleich von Menschen leicht lesbares Dateiformat, das grundsätzlich mit jedem Texteditor bearbeitet werden kann. Allerdings sind die Bezeichnungen der Einstellungen damit keineswegs auch selbsterklärend und aussagekräftig.[7]

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

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

; 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

Bearbeiten

Speicherort

Bearbeiten
 
Beispiel einer benutzerfreundlichen Auswahlmöglichkeit zur Festlegung des Speicherortes

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.

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 einer Sektion der INI-Datei.
  • GetPrivateProfileSectionNames: Microsoft Windows API-Funktion zum Auslesen von Sektionen 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
  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. 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.”
  3. 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.”
  4. a b 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
  5. 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 in 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.”
  6. 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.“
  7. a b 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.”