Sprache: VB
Die nachfolgende Klasse ermittelt den UNC Namen eins gemounteten Netzlaufwerkes. (Ddanke an Volker für die Deklaration)
Public Class clsUnc
Private Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, ByRef cbRemoteName As Integer) As Integer
Friend Shared Function fnGetUncPath(ByVal strDriveLetter As String) As String
Dim intRet As Integer
Dim strRet As String = ""
Dim Length As Integer = 260
Dim strTemp As String = New String(" ", Length)
intRet = WNetGetConnection(strDriveLetter.Substring(0, 1) & ":", strTemp, Length)
strRet = strTemp.Substring(0, strTemp.IndexOf(Chr(0)))
Return strRet
End Function
End Class
Public Class clsUnc
Private Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" (ByVal lpszLocalName As String, ByVal lpszRemoteName As String, ByRef cbRemoteName As Integer) As Integer
Friend Shared Function fnGetUncPath(ByVal strDriveLetter As String) As String
Dim intRet As Integer
Dim strRet As String = ""
Dim Length As Integer = 260
Dim strTemp As String = New String(" ", Length)
intRet = WNetGetConnection(strDriveLetter.Substring(0, 1) & ":", strTemp, Length)
strRet = strTemp.Substring(0, strTemp.IndexOf(Chr(0)))
Return strRet
End Function
End Class
Alte URL:
/snippet/original-unc-pfad-eines-netzlaufwerkes-ermitteln/940
Prinzipiell nicht schlecht, nur folgendes:
1. UNC-Pfade können länger als 260 Zeichen sein.
2. Die ERROR_MORE_DATA-Situation muss separat behandelt werden: in Length steht nach dem Aufruf die tatsächliche Länge des Pfads und sollte demnach an den Benutzer weitergegeben werden.
3. Die Methode WNetGetConnection wirft insgesamt 7 Exceptions, von denen keine einzige behandelt wird.
4. Ein einzelnes Zeichen (strDriveLetter) sollte als Char akzeptiert werden, nicht als String.