1. Herfried K. Wagner’s VB.Any
  2. .NET
  3. Häufig gestellte Fragen

Ermitteln der einer Datei zugeordneten Anwendung

Ermitteln der einer Datei zugeordneten Anwendung
<URL:https://dotnet.currifex.org/dotnet/faqs/findassociatedapp/de/>
----------------------------------------------------------------------------

Determining a file's associated application

'FindAssociatedApplication' returns the path to the executable associated
with the file passed to the function.  An exception is thrown if an error
occurs:

\\\
Imports System.Text

Private Declare Auto Function FindExecutable Lib "shell32.dll" ( _
    ByVal lpFile As String, _
    ByVal lpDirectory As String, _
    ByVal lpResult As StringBuilder _
) As Int32

Private Const SE_ERR_FNF As Int32 = 2
Private Const SE_ERR_NOASSOC As Int32 = 31
Private Const SE_ERR_OOM As Int32 = 8

Private Const MAX_PATH As Int32 = 260

Private Function FindAssociatedApplication( _
    ByVal FileName As String _
) As String
    Dim sb As New StringBuilder(MAX_PATH)
    Dim n As Int32 = FindExecutable(FileName, vbNullString, sb)
    If n > 32 Then
        Return sb.ToString()
    Else
        Dim s As String = "Unknown error."
        Select Case n
            Case SE_ERR_FNF
                s = "File not found."
            Case SE_ERR_NOASSOC
                s = "No file association found."
            Case SE_ERR_OOM     ' Since Windows XP.
                s = "Out of memory."
        End Select
        Throw New Exception(s)
    End If
End Function
///

Usage:

\\\
Try
    MsgBox(FindAssociatedApplication("C:\WINDOWS\WIN.INI"))
    MsgBox(FindAssociatedApplication("C:\FOO\FOO.INI"))
Catch ex As Exception
    MsgBox(ex.Message)
End Try
///

'FindExecutable' is used for documents, to find the path of an executable
file, 'AssocQueryString' can be used.