Canvas not supported
Canvas not supported
Suchen
Bookmark
Canvas not supported
Shine Effekt
Direkt zum Seiteninhalt

Hauptmenü:

Datei Erweiterungen / Dateitypen

 

Autor:

Oscar Kohler

Version:

0.11

Level:

Einfach

Sprache:

---


 
Haftungsausschluss / Disclaimer
Kontakt / Contact
Drucken / Print


Woher weiß
Windows, welches Programm gestartet werden muss, um bestimmtes Dokument öffnen zu können ?

Datei Erweiterung / Dateinamen Erweiterung (file extension)


Welches Programm für welche Datei aufgerufen wird, stellt Windows Explorer mithilfe der Dateierweiterung fest. Eine bestimmte Dateierweiterung (z.B.: .doc) wird immer mit dem selben, für diesen Dateityp konfigurierten, Programm geöffnet.

Ich erzähl nun sicher nichts Neues ...
Mithilfe der GUI können wir ganz einfach einer bestimmten Dateierweiterung ein beliebiges Programm zuordnen. In diesem Beispiel wird die Dateierweiterung .txt mit dem Programm notepad.exe verknüpft.


Datei Zuordnung


So selbstverständlich wie es nun klingt ist es eigentlich gar nicht. Manch andere Betriebssysteme erkennen Dateien nicht an der Erweiterung, sondern anhand bestimmter Zeichen im Header -> Magic Bytes.

Wie wird nun diese Zuordnung im Hintergrund verarbeitet ...

Datei Assoziation


Zuallererst benötigt Windows eine Zuordnung zwischen der Erweiterung und dem Dateityp. Beispielsweise die Zuordnung .txt zum Typ txtfile.
Für diesen Zweck stellt uns Windows ein cmd-command bereit: assoc

MS Beschreibung: assoc

Mit assoc können wir uns die bestehenden Zuordnungen ansehen und in Folge auch bearbeiten. Rufen wir assoc ohne Parameter auf, so werden alle aktuellen Assoziationen aufgelistet. Die Ausgabe können wir natürlich auch in eine Datei umleiten.

assoc >c:txt

Wollen wir eine bestimmte Erweiterung ansehen, geben wir einfach die Erweiterung als Parameter mit.

assoc .txt
.txt=txtfile

Datei-Typ


Um nun festzustellen, welcher FileTyp nun mit welchem Programm geöffnet wird, benötigen wir ein weiteres cmd-command: ftype

MS Beschreibung: ftype

Ein Aufruf ohne Parameter liefert uns nun alle bestehenden Zuordnungen. Natürlich können wir auch diese wieder in eine Datei umleiten.

ftype >c:txt

Wollen wir wiederum einen bestimmten Filetyp ansehen, so können wir diesen als Parameter mitgeben.

ftype txtfile
txtfile=C:EXE %1

Hier sehen wir nun, dass alle Dateien mit dem Dateityp: txtfile als ersten Parameter (%1) an notepad.exe weitergegeben werden.

Mit diesen beiden Kommandos können wir uns die Zuordnungen ansehen, und auch editieren.

Wichtig ist hierbei, dass diese Verknüpfungen immer für den Computer, und somit für alle Benutzer gelten. Aus diesem Grund werden administrative Rechte benötigt um die Zuordnungen zu ändern.

Dateierweiterung Zuordnung in der Registry


Warnung !
Vorsicht beim Umgang mit der Registry !

Wie so vieles, werden diese Zuordnungen in der Registry gespeichert. Und zwar unter dem Hive:
[HKEY_CLASSES_ROOT]

Hier finden wir die Assoc Zuordnung: Dateierweiterung -> DateiTyp
[HKEY_CLASSES_ROOT\.txt]

Assoc Registry

Etwas darunter die "Ftype" Zuordnung: DateiTyp -> "mit diesem Programm öffnen"
[HKEY_CLASSES_ROOT\txtfile]

FType Registry

Die von "ftype" definierbare Open-Action findet sich in unter diesem Key:
[HKEY_CLASSES_ROOT
\txtfile\shell\open\command]

Neben "open" gibt es noch andere Aktionen die mittels Kontextmenu ausgewählt werden können:
"edit", "print", "printto", … diese werden mit ftype leider nicht gelistet.

Datei Icon in der Registry


Ein interessanter Key ist auch das DefaultIcon.

[HKEY_CLASSES_ROOT\txtfile\DefaultIcon]
@=%SystemRoot%\system32\imageres.dll,-144

Hier kann für diesen Filetyp ein Icon eingetragen werden, indem man ein Executable und den Iconindex angibt.
0 entspricht dabei dem Mainicon.

In unserem Beispiel wurde eine Resource-Dll eingetragen. Eine Resource-Dll ist eher eine untypische Dll, da sie keine Funktionen zur Verfügung stellt, sondern wie der Name sagt: Resourcen wie z.b.: Bilder, Icons, Animationen, …

Dateinamen Erweiterung Icon

Dateinamen Erweiterung Benutzer Rechte


[HKEY_CLASSES_ROOT] ist prinzipiell ein "Spiegel" der [HKEY_LOCAL_MACHINE], d.h. dies ist ein "Local-machine Hive" und benötigt daher administrative Rechte zur Bearbeitung. Darum kann ein "normaler" Benutzer keine Änderungen mittels assoc oder ftype vornehmen.

Dennoch wäre es vor allem in einer Multiuser Umgebung praktisch, dem Benutzer die Möglichkeit zu geben, selbst zu entscheiden, mit welchem Programm ein Textfile geöffnet werden kann.

Dieses Problem hat Microsoft "umschifft" in dem es diese Settings in der User-Registry speichert.

Ab Windows Vista, werden User Verknüpfungen hier gespeichert:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice]
Progid = txtfile

Das heißt also, wählt man eine Verknüpfung mit dem "Öffnen mit ► Standardprogramm auswählen …" Dialog, so wird dies nicht in den Classes, sondern unter UserChoice gespeichert. Ab nun wird das Programm aufgerufen, das hier eingetragen wurde. Allerdings muss die Fileextension z.B.: .txt -> txtfile bereits registriert sein.

Wird der UserChoice Wert gelöscht, so gilt wieder die "All Users" Verknüpfung, die in den Classes eingetragen wurde. Der Usereintrag wird sozusagen wieder zurückgesetzt.

Unter Windows XP, wurde hierzu ein anderer Value verwendet:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt]
Application REG_SZ WORDPAD.EXE

Dateinamen Erweiterung Gedächtnis


Jedes Mal wenn man eine Dateierweiterung mit einem anderen Programm öffnet, speichert Windows dieses Programm in einer Liste, und wird bei jedem "Öffnen mit" vorgeschlagen.

Gespeichert wird es in der OpenWithList:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList]
a = NOTEPAD.EXE

In einem Char - Value Paar.

Die Aufruf Sequenz wird in der MruListe gespeichert.

MRUList = ab

Verwendet man unterschiedliche Programme, füllt sich daher die Vorschlagsliste:

Dateinamen Erweiterung Gedächtnis


Die "OpenWithList" ist nun um diese Programme angewachsen ...

OpenWithList

Der Vollständigkeit halber sei noch gesagt, dass manche Programme bei der Installation die OpenWithList und OpenWithProgIds in den Classes befüllen. Diese "Default" Verknüpfungen werden dann zusätzlich vorgeschlagen.


 
Kein Kommentar
 
Letzte Änderung: 03.02.2015
button Canvas not supported button
Zurück zum Seiteninhalt | Zurück zum Hauptmenü