Laufwerksbuchstaben in UNC-Pfad auflösen.

Hallo Zusammen!

Ihr habt bestimmt mal das Problem gehabt, das bei einer Dateiauswahl der Laufwerksbuchstabe angegeben wurde. Und ggf. wurde dieser Pfad in einer Datenbank hinterlegt. Sollte sich jetzt der Laufwerksbuchstabe ändern, könnt Ihr nicht mehr auf das Vereichnis über den Laufwerksbezeichner zugreifen.

Um diesem vorzubeugen, habe ich eine Methode geschrieben, die die Auflösung des Laufwerksbuchstabens in den UNC-Pfad umwandelt.

 

Viel Spaß

''' <summary>
''' Diese Klasse dient zur Aufschlüsselung von Laufwerksbuchstaben
''' Sollte ein gemapptes Laufwerk übergeben werden, wird dieses in den UNC-Pfad aufgelöst.
''' </summary>
Public Class UncPfadDekoder

    ''' <summary>
    ''' Übergeben Sie den Ganzen Pfad oder nur den Laufwerksbuchstaben.
    ''' Der Laufwerksbuchstabe wird automatisch als UNC-Pfad aufgeschlüsselt
    ''' Handelt es sich um kein NetworkDrive, dann wird der Laufwerksbuchstabe zurückgegeben.
    ''' </summary>
    ''' <param name="path">Übergebt den ganzen Pfad oder nur den Laufwerksbuchstaben</param>
    ''' <returns></returns>
    Public Shared Function getUncPath(path As String) As String
        Dim ret As Integer
        'out empfängt den UNC Pfad
        Dim out As String = New String(" ", 260)
        'Buffer länge wird bestimmt
        Dim len As Integer = 260
        'Resultstring wird definiert der zur späteren Rückgabe verwendet wird
        Dim returnResult As String = path


        ' Falls der Pfad schon mit doppel Slash beginnt, benötigen wir keine weitere Auflösung
        If path.StartsWith("\\") = False Then

            Dim leftLetter As String = Left(path, 2)
            ret = WNetGetConnection(leftLetter, out, len)
            'ist der Rückgabewert 0, konnte ein UNC-Pfad aufgelöst werden.
            If ret = 0 Then
                returnResult = out.Substring(0, out.Length - 1).Replace(vbNullChar, "").Trim()
                returnResult += path.Substring(2).ToString
            Else
                returnResult = path
            End If
        End If
        Return returnResult
    End Function
End Class