Feedback

Original UNC Pfad eines Netzlaufwerkes ermitteln

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

1 Kommentar

  1. 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.