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 !
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:
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 !
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
- <DllImport("advapi32.dll", SetLastError:=True)> _
- 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
- End Function
- Private token As IntPtr = IntPtr.Zero
- LogonUser(<USER>, <SERVER>, <PASS>, Logon32Type.LOGON32_LOGON_NEWCREDENTIALS, Logon32Provider.Default, token)
- Dim person = New Security.Principal.WindowsIdentity(token).Impersonate()
- 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:
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“ ()