Option Explicit
Option Private Module
' ---------------------------------------------------------
' Funktion GetUNCPath
' Zeigt den UNC-Pfad eines Laufwerkes
' Eingestellt von: Andre Schau
' Datum: 2011-09-10
' Kommentar:
' Parameter: strDrive in Form "X:"
' Rückgabe: UNC-Pfad, bei lokalem Laufwerk Laufwerksbuchstabe
' weitere benoetigte Programme und Funktionen
' API-Funktion: WNetGetConnection
' Aufruf:
' Sub Call_GetUNCPath()
' MsgBox "Der UNC-Pfad vom Netzlaufwerk X: lautet: " & GetUNCPath("X:")
' End Sub
' ---------------------------------------------------------
 
Private Declare Function WNetGetConnection Lib _
   "mpr.dll" Alias "WNetGetConnectionA" (ByVal lpszLocalName _
   As StringByVal lpszRemoteName As String, _
   cbRemoteName As LongAs Long
   
'Aufruf
Sub Call_GetUNCPath()
    MsgBox "Der UNC-Pfad vom Netzlaufwerk X: lautet: " & GetUNCPath("X:")
End Sub

Function GetUNCPath(ByVal strDrive As StringAs String
'Parameter: Laufwerksbuchstabe in Form "L:"
'keine Fehlerbehandlung!
'Variablendeklarationen
'String
Dim strUNCPath$, strResult$
'Long
Dim lRet&
'Rueckgabewert zuweisen
GetUNCPath = strDrive
'Leerstring (Nullzeichen) fuer UNCPath erzeugen
strUNCPath = String(260, 0)
'Abfrage des UNC-Path,
'Rueckgabe aus WNetGetConnection bei UNC-Path = 0
'1200 bei nicht vorhandenem LW, 2250 bei lokalem LW
'(getestet unter W7-64)
'API-Parameter: Laufwerk, Leerstring, Laenge des Leerstring,
lRet = WNetGetConnection(strDrive, strUNCPath, 260)
'Wenn Rueckgabe = 0 dann
If lRet = 0& Then
  'Nullzeichen in strUNCPath entfernen
  strResult = Left$(strUNCPath, InStr(strUNCPath, vbNullChar) - 1)
  'zurueckgegebener String sollte Zeichen enthalten
  'Wenn
  If Len(strResult) > 0 Then
    'Rueckgabewert zuweisen
    GetUNCPath = strResult
  End If
'Ende Wenn Rueckgabe = 0 dann
End If
End Function