UNC Path from Network-Drive

Hallo,

Ihr kennt es bestimmt!

Wenn Ihr einen Pfad und ggf. Datei über einen File-Chooser auswählen wollt.

Das Ergebnis könnte so aussehen.

T:\geteiltes_Verzeichnis\meinExcel.xlsx

Vieleicht wollt Ihr den Pfad in einer Datenbank hinterlegen, damit alle Benutzer (natürlich mit der Berechtigung auf das Verzeichnis zugreifen zu können) die Excel-Datei lesen.

Das T: – Laufwerk ist aber ein Netzlaufwerk und hat im Hintergrund einen UNC-Pfad.

Somit können andere Benutzer, die kein T-Laufwerk besitzen aber den Zugang zu eurem Verzeichnis haben, nicht darauf zugreifen.

Es ist sehr mühselig, den Laufwerksbuchstaben von Hand in den UNC-Pfad , beim erzeugen, zu wandeln.

Deshalb diese Lösung:

 

Ausgangslagen:
Bevor Ihr den Pfad in einer Datenbank ablegt, wandelt Ihr den Laufwerksbuchstaben einfach in einen UNC-Pfad um.

T:\geteiltes_Verzeichnis.    ( Im Hintergrund ist der UNC-Pfad —> \\myFileServer\VerzeichnisX\

Imports System.IO

Module Module1

    Public Declare Function WNetGetConnection Lib "mpr.dll" Alias _
             "WNetGetConnectionA" (ByVal lpszLocalName As String,
             ByVal lpszRemoteName As String, ByRef cbRemoteName As Integer) As Integer

    Sub Main()

        Dim ret As Integer
        Dim out As String = New String(" ", 260)
        Dim len As Integer = 260

' Testet es einmal: Anstatt T könnt Ihr euren eingenen Netzlaufwerksbuchstaben einfügen.
        ret = WNetGetConnection("T:", out, len)
        If out.Count > 0 Then
            Console.WriteLine("UNC Path:   " & out.Trim)
        Else
            Console.WriteLine("Drive not found")
        End If
        Console.ReadLine()
    End Sub

End Module

 

Viel Spaß beim Testen.