|
Den tatsächlichen Netzwerk-Pfad (UNC-Pfad) eines Netzlaufwerkes
können Sie mit Hilfe der API-Funktion WNetGetConnection
ermitteln. Da diese Funktion (wie so viele API-Funktionen) nicht so
einfach und direkt aus Visual Basic heraus aufrufbar ist, haben wir
die Hilfsfunktion UNCPathFromNetworkDrive darum herum gebaut. Sie
erweitert zudem die Aufrufmöglichkeit, so dass Sie auch einen
beliebigen Pfad eines Ordners oder einer Datei auf dem Netzlaufwerk
als Parameter übergeben können, oder auch nur den blanken
Laufwerksbuchstaben (ohne ":" usw.). Schlägt
der Aufruf der Funktion fehl, wird ein abfangbarer Laufzeitfehler
ausgelöst. Die Fehler-Codes finden Sie in der Enumeration
UNCPathFromNetworkDriveErrorConstants.
Public Enum UNCPathFromNetworkDriveErrorConstants
upnOK = 0
upnErrNotSupported = 50050
upnErrMoreData = 50234
upnErrBadDevice = 51200
upnErrConnectionUnavailable = 51201
upnErrNoNetOrBadPath = 51203
upnErrExtendedError = 51208
upnErrNoNetwork = 51222
upnErrNotConnected = 52250
End Enum
Private Declare Function WNetGetConnection Lib "mpr.dll" _
Alias "WNetGetConnectionA" (ByVal lpszLocalName As String, _
ByVal lpszRemoteName As String, cbRemoteName As Long) As Long
Public Function UNCPathFromNetworkDrive(DriveLetter As String) _
As String
Dim nDrive As String
Dim nUNCPath As String
Dim nLength As Long
Dim nNullPos As Integer
Dim nResult As Long
nDrive = Left$(DriveLetter, 1) & ":"
nUNCPath = Space$(255)
nLength = 255
nResult = WNetGetConnection(nDrive, nUNCPath, nLength)
Select Case nResult
Case 0
nNullPos = InStr(nUNCPath, Chr$(0))
UNCPathFromNetworkDrive = Left$(nUNCPath, nNullPos - 1)
Case Else
Err.Raise nResult + 50000, "UNCPathFromNetworkDrive"
End Select
End Function
|