Extension mit Programm verknüpfen

Unglaublich mit was man sich alles beschäftigen muss… Für kurzes Kopfzerbrechen heute sorgte der Wunsch ein Programm anahnd der FileExtension zu starten.

Zum Glück eine ganz einfache Sache, verbunden mit ein bißchen Tipparbeit in der Registry (zum testen natürlich nur 😉   ) – und so gehts:

Zunächst einmal wird ein Schlüssel unter HKEY_CLASSES_ROOT benötigt der die zu registrierende Extension darstellt – nennen wir sie ".mxExt". Der zu erstellende Schlüssel trägt also den Namen ".myExt". Dieser Schlüssel erhält als Standard-Wert den Namen eines weitern Schlüssels der ebenfalls noch angelegt werden muss. Um das Beispiel fortzusetzen wird als Standard "myExtFile" eingetragen.

Im nächsten Schritt wird dann dieser Schlüssel ebenfalls HKEY_CLASSES_ROOT hinzugefügt. Diesem Schlüssel muss nun ein weiterer Schlüssel mit dem Namen "shell" hinzugefügt werden. "shell" erhält wiederum einen Schlüssel mit dem Namen "open", und dieser abschließend einen weiteren Schlüssel mit dem Namen "command" – an der Stelle bin ich an meine grammatikalischen Grenzen gestoßen, wie um Himmels willen formuliert man so etwas?

command letztendlich erhält als Standard-Wert den Pfad zur exe – in Anführungszeichen – die ausgeführt werden soll, gefolgt von einem %1 (ausserhalb der Anführungszeichen.

Das ganze Konstrukt schaut dann in etwa so aus:

HKEY_CLASSES_ROOT.myExt
   (Standard)     REG_SZ       myExtFile

HKEY_CLASSES_ROOTmyExtFileshellcommand
    (Standard)     REG_SZ       "c:PfadZurEXE" %1

Ein Doppelklick auf eine Datei mit der Extension öffnet jetzt das entsprechende Programm.

Um an den Dateinamen zu kommen der dieses Ereignis ausgelöst hat müssen nur noch die CommandLIne-Argumente ausgelsen werden

string[] commandLine = Environment.GetCommandLineArgs();

Advertisements