Windows-Registrierung: Dateizuordnungen

Wenn man auf eine Datei doppelklickt, öffnet Windows diese Datei mit dem entsprechendem Programm. Damit Windows aber auch weiß, was es zu tun hat, benutzt es die Windows-Registrierungsdatenbank, in der alle dem Betriebssystem bekannten Dateizuordnungen gespeichert sind.

Die Dateizuordnungen sind im Schlüssel HKEY_CLASSES_ROOT zu finden. Dateizuordnungen bestehen aus zwei Teilen - einmal der Dateiendung selber, und dann einmal den zugehörigen Dateityp. Diese Zweiteilung hat den Sinn, dass man mehrere Dateiendungen mit einem Typ verknüpfen kann; so kann man beispielsweise die Endungen .jpg, .jpeg und .jpe alle dem Dateityp jpegfile zuweisen und alle dasselbe Symbol benutzen lassen.

Der erste Teil besteht, wie bereits erwähnt, aus der Dateiendung. Diese wird in einem Schlüssel registriert, der so heißt wie die Endung. In folgendem Text nehmen wir als Beispiel ein einfaches Bitmap mit der Dateiendung .bmp. Dieses hat in der Registrierung einen Eintrag unter HKEY_CLASSES_ROOT\.bmp. Der vorhandene Eintrag (Standard) hat als Wert den der Dateiendung zugehörigen Dateityp, der Name des Dateityps ist dabei beliebig. Standardmäßig und in unserem Beispiel lautet der Dateityp Paint.Picture.

Der Dateityp ist ebenfalls unter HKEY_CLASSES_ROOT zu finden, in unserem Beispiel wäre das HKEY_CLASSES_ROOT\Paint.Picture. Der vorhandene Eintrag (Standard) enthält hier den Namen des Dateityps, wie er im Windows-Explorer erscheint. Daneben sind hier aber auch andere Optionen möglich, indem man neue Schlüssel erstellt:

Windows-Registrierung
Name Typ Standardwert Beschreibung
NeverShowExt REG_SZ (leer) Existiert dieser Eintrag, wird die Dateiendung nicht angezeigt, selbst dann, wenn "Erweiterungen bei bekannten Dateitypen ausblenden" deaktiviert ist.
AlwaysShowExt REG_SZ (leer) Existiert dieser Eintrag, wird die Dateiendung immer angezeigt, selbst dann, wenn "Erweiterungen bei bekannten Dateitypen ausblenden" aktiviert ist.
IsShortcut REG_SZ (leer) Existiert dieser Eintrag, erscheint das Shortcut-Symbol über dem normalen Symbol einer Datei dieses Typs.
EditFlags REG_BINARY 00 00 00 00 Steuert das Verhalten dieses Dateityps in den Ordneroptionen und im Internet Explorer (siehe unten)

EditFlags erlaubt mehrere Optionen durch das Setzen von Binärwerten. Diese steuern nicht nur, wie sich dieser Dateityp in den Ordneroptionen im Windows-Explorer verhält, sondern auch das Verhalten des Internet Explorers beim Herunterladen einer Datei dieses Dateityps. Wenn mehrere der angegebenen Einstellungen gelten sollen, werden die hexadezimalen Zahlen addiert, was zum Beispiel mit dem Windows-Taschenrechner möglich ist.

Für das erste Byte sind folgende Einstellungen möglich.

Binärwerte
Binär Hexadezimal Beschreibung
00000001 01 Dieser Dateityp erscheint nicht in der Liste der Dateitypen in den Ordneroptionen.
00000010 02 Dieser Dateityp erscheint in der Liste der Dateitypen, obwohl keine Dateiendung ihm zugehörig ist (in diesem Fall erscheint der Dateityp am Anfang mit der Endung (KEINE))
00000100 04 Dieser Dateityp hat eine Dateiendung (wird nur in seltenen Fällen benötigt)
00001000 08 Die Einstellungen für diesen Dateityp können nicht bearbeitet werden.
00010000 10 Dieser Dateityp kann nicht aus der Liste der Dateitypen gelöscht werden.
00100000 20 Es können keine neuen Aktionen für diesen Dateityp hinzugefügt werden.
01000000 40 Die Aktionen für diesen Dateityp können nicht bearbeitet werden.
10000000 80 Die Aktionen für diesen Dateityp können nicht entfernt werden.

Für das zweite Byte sind folgende Einstellungen möglich:

Binärwerte
Binär Hexadezimal Beschreibung
00000001 01 Der Name des Dateityps kann nicht geändert werden.
00000010 02 Das Symbol für diesen Dateityp kann nicht geändert werden.
00000100 04 Es kann keine neue Standardaktion für diesen Dateityp ausgewählt werden.
00001000 08 Der Name eines Vorgangs kann nicht geändert werden.
00010000 10 Der mit einem Vorgang assoziierte Befehl kann nicht geändert werden.
00100000 20 Die Option "DDE verwenden" ist deaktiviert.
01000000 40 reserviert
10000000 80 Der MIME-Typ und die Standarderweiterung können nicht geändert werden.

Für das dritte Byte sind folgende Einstellungen möglich:

Binärwerte
Binär Hexadezimal Beschreibung
00000001 01 Wird eine Datei dieses Typs mit dem Internet Explorer aufgerufen, wird nicht gefragt, ob die Datei heruntergeladen werden soll - sie wird automatisch geöffnet.
00000010 02 Es wird immer gefragt, ob diese Datei geöffnet werden soll.
00000100 04 Die Dateiendung von Dateien diesen Typs wird immer angezeigt, selbst dann, wenn "Erweiterungen bei bekannten Dateitypen ausblenden" aktiviert ist.
00001000 08 reserviert
00010000 10 Dateien diesen Typs erscheinen nicht in den zuletzt geöffneten Dokumenten.
00100000 20 reserviert
01000000 40 reserviert
10000000 80 reserviert

Das vierte Byte ist komplett reserviert.

Weitere Optionen sind in Unterschlüsseln enthalten. Der Schlüssel DefaultIcon enthält unter dem Wert (Standard) das Symbol für diesen Dateityp. Es kann sich dabei entweder um eine eigenständige .ICO-Datei, oder um ein in einer .EXE- oder .DLL-Datei enthaltenes Symbol handeln. Diese Icons lassen sich über die Windows-Benutzeroberfläche finden, indem man die Eigenschaften einer beliebigen Verknüpfung aufruft und dann „Anderes Symbol“ anwählt. Allerdings sollte man beachten, dass Windows von Null anfängt zu zählen, will man also z. B. das zweite Symbol von EXPLORER.EXE benutzen, lautet der Befehl EXPLORER.EXE,1.

Im Unterschlüssel shell wird festgelegt, was Windows mit dieser Datei zu tun hat. Unter shell kann man mehrere Unterschlüssel erstellen, die dann als Befehle im Kontextmenü erscheinen, z. B. open für das Öffnen einer Datei. Unter solch einem Schlüssel muss dann noch ein weiterer Schlüssel command angelegt werden, der gesamte Pfad wäre also HKEY_CLASSES_ROOT\Paint.Picture\shell\open\command. Der dortige Wert (Standard) enthält dann den Befehl, der ausgeführt werden soll, wenn "Öffnen" im Kontextmenü ausgewählt wird. In unserem Beispiel wäre das mspaint.exe "%1", wobei %1 für die zu öffnende Datei steht.

Neben diesen Zuordnungen kennt Windows noch einige Sonderfälle:

  • HKEY_CLASSES_ROOT\* enthält Einstellungen für sämtliche Dateien und Ordner.
  • HKEY_CLASSES_ROOT\Drive enthält Einstellungen für alle Laufwerke.
  • HKEY_CLASSES_ROOT\Folder enthält Einstellungen für alle Ordner.
  • HKEY_CLASSES_ROOT\Unknown enthält Einstellungen für Dateien mit einer dem System unbekannten Endung.