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