Get the associated application for a file extension


Sometimes its necessary for us to identify what application is associated with a particular file extension, the following snippet of code will read the Windows registry to identify what application a particular file extension is opened with by default.

''' <summary>
''' This method deals with getting the path of the application that is specified to open
''' a particular extension
''' </summary>
''' <param name="ext">The extension to get the associated application for</param>
''' <returns>The path of the application that is associated to the specified extension</returns>
''' <remarks>Returns a zero length string if the extension is not found</remarks>
Public Shared Function getApplicationForExtension(ByVal ext As String) As String
    Dim key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.ClassesRoot
    Dim secondKey As String
    Dim rtn As String = ""

    If Not ext.StartsWith(".") Then
        ext = "." & ext
    End If

    key = key.OpenSubKey(ext)

    If key IsNot Nothing Then
        secondKey = key.GetValue("").ToString()

        If secondKey <> "" Then
            key = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(secondKey & "ShellOpenCommand")
            rtn = key.GetValue("").ToString()
            rtn = System.Text.RegularExpressions.Regex.Match(rtn, """(.*?)""").Groups(0).Value
        End If
    End If

    Return rtn
End Function