
Ich wollte für ein Programm an dem ich gerade arbeite statt der Dateiendung die Beschreibung zu der Dateiendung anzeigen.
Windows selbst zeigt diese Beschreibung beispielsweise in der Statusleiste des Explorers, wenn man auf eine bekannte Datei klickt. Beispielsweise bei "*.MOV" Dateien wäre die Anzeige (je nachdem mit welchem Programm die Endung verknüpft ist) "VLC media file (.mov)" oder "Quicktime Movie".
Nunja, als ich noch mit Delphi programmierte hätte ich hierzu die Shell32 SHGetFileInfo Funktion verwendet, doch unter .NET binde ich ungerne DLLs ein, also habe ich mir eine Funktion gebastelt, die die Info aus der Registry ausliest.
''' <summary> ''' Retrieve the Description/Displayname for a FileExtension ''' </summary> ''' <param name="aExtension">The Extension with a leading dot</param> ''' <returns>The Description of an Extension</returns> ''' <remarks></remarks> Public Shared Function GetDisplayNameFromExtension(ByVal aExtension As String) As String If aExtension = String.Empty Or Not aExtension.StartsWith(".") Then Return String.Empty ' First the get the key for the extension ' Extension is for example ".MOV", Key is "VLC.mov" Dim key As Microsoft.Win32.RegistryKey = My.Computer.Registry.ClassesRoot.OpenSubKey(aExtension) If key IsNot Nothing Then ' Then we look in the sub key for the description Dim SubkeyName As String = key.GetValue(String.Empty) Dim SubKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.ClassesRoot.OpenSubKey(SubkeyName) If SubKey IsNot Nothing Then Return SubKey.GetValue(String.Empty) End If End If Return String.Empty End Function
Beispielaufruf:
Msgbox(GetDisplayNameFromExtension(".zip"))
