Zugriff auf UNC-Pfad mit gesonderten Login-Daten

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Mono.

    Zugriff auf UNC-Pfad mit gesonderten Login-Daten

    Hi zusammen,

    ich habe hier ein (abteilungsinternes) Programm, bei dem die Benutzer sich zum Start mit ihren Login an unsere Datenbank anmelden müssen.
    In der DB liegen Logindaten um auf unseren internen Fileserver zugreifen zu können (Dateien, die das Programm benötigt).
    Den Zugriff erreiche ich über folgendes Konstrukt, so dass in "allFiles" dann tatsächlich die vorhandenen Dateien der Netzwerkfreigabe aufgelistet sind.
    Es funktioniert also grundsätzlich !

    VB.NET-Quellcode

    1. <DllImport("advapi32.dll", SetLastError:=True)> _
    2. Friend Function LogonUser(ByVal lpszUsername As String, ByVal lpszDomain As String, ByVal lpszPassword As String, ByVal dwLogonType As Logon32Type, ByVal dwLogonProvider As Logon32Provider, ByRef phToken As IntPtr) As Boolean
    3. End Function
    4. Private token As IntPtr = IntPtr.Zero
    5. LogonUser(<USER>, <SERVER>, <PASS>, Logon32Type.LOGON32_LOGON_NEWCREDENTIALS, Logon32Provider.Default, token)
    6. Dim person = New Security.Principal.WindowsIdentity(token).Impersonate()
    7. Dim allFiles = IO.Directory.GetFiles($"{<SERVER>}\<Frei>\<gabe>\<pfad>\")


    Wenn ich jetzt allerdings einen FileOpenDialog auf die Netzwerkfreigabe loslasse,
    scheint er die Anmeldedaten nicht zu kennen. Es öffnet statt dessen ein lokales Verzeichnis und
    gleichzeitig eine Maske zum Eingeben des Netzwerklogins:

    VB.NET-Quellcode

    1. Dim dlgFileOpen As New OpenFileDialog()
    2. dlgFileOpen.InitialDirectory = $"{<SERVER>}\<Frei>\<gabe>\<pfad>\"
    3. dlgFileOpen.Filter = FileHelper.GetImageFilter()
    4. dlgFileOpen.Multiselect = False
    5. dlgFileOpen.ShowDialog()


    Das gleich passiert auch, wenn ich ein Explorer-Fenster in dem UNC-Pfad öffnen möchte.
    Das kann ich mir noch dadurch erklären, dass die Login-Daten nur innerhalb des Programms/des Prozesses
    existieren, der Explorer aber einen eigenen, neuen Prozess darstellt.

    Hat jemand eine Idee, wie ich den FileOpenDialog (und den Explorer) auf der Netzwerkfreigabe öffnen kann ?

    PS: Der User, der auf die Freigabe zugreifen soll, existiert lokal nicht !

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Duke“ ()

    Glaub da wirst vermutlich einen eigenen FileOpenDialog bauen müssen.

    Du könntest vll versuchen einen neuen STA Thread zu erstellen. Dort das LogOn auszuführen und danach den OpenFileDialog zu öffnen.
    Keine Ahnung ob das klappt ^^
    Das ist meine Signatur und sie wird wunderbar sein!