2016-04-26 12 views
1

In einem sehr großen LAN habe ich freigegebene Ordner von LDAP Auth geschützt. Ich habe meinen BE in einen freigegebenen Ordner gestellt und den fälligen Benutzern den Zugriff auf diesen Ordner ermöglicht. In der FE sind die Tabellen mit den BE verknüpft, also bevor ich die FE öffnen kann, muss ich den freigegebenen Ordner öffnen (doppelklicken) (um Benutzername und Passwort anzugeben) und dann schließen. Sehr hässlich. Wie kann ich eine mit einem BE verknüpfte FE in einem geschützten Ordner öffnen, ohne diesen Ordner zuerst öffnen zu müssen?BE auf freigegebenen Ordner, die Authentifizierung erfordern

Thanx im Voraus Marco

Antwort

1

I gelöst. Nach dem Öffnen der FE zeige ich ein Formular, das nach Benutzername und Passwort fragt, dann gebe ich diese Zugangsdaten an die folgende Funktion weiter. Wenn es FALSE zurückgibt, waren die angegebenen Anmeldeinformationen nicht richtig.

Public Function RemoteLogin(Ute As String, Pw As String, RemotePath As String) As Boolean 
Dim Str1 As String 

' to disable the credentials : Str1 = "net use " & RemotePath & "/delete" 

    Str1 = "net use " & RemotePath & " /user:" & Ute & " " & Pw 
    Shell "cmd.exe /c " & Str1, vbHide 
    WaitForSeconds (2) 
    On Error Resume Next 
    RemoteLogin = ((GetAttr(RemotePath) And vbDirectory) = vbDirectory) 

End Function 

(RemotePath so etwas wie "\\ Fileserver \ Shared" ist)

Ich hatte eine Verzögerung von 2 Sekunden, weil in mittelgroßen LAN setzen i Zeit zu propagieren nimmt (wir verwenden SAMBA und LDAP). Nach der Verzögerung musste ich die Offenheit des Pfades testen, da Shell kein Ergebnis zurückgibt, auch wenn das angegebene Passwort nicht korrekt war oder nicht.

HTH

Marco

0

Und hier ist eine bessere Lösung, bei der eine syncronous Version des Shell-Befehl verwendet wird (von @ Alex von masterdrive.it vorgeschlagen). Keine Notwendigkeit, hier eine Verzögerung von 2 Sekunden zu erzwingen.

Public Function RemoteLogin(Ute As String, Pw As String, RemotePath As String) As Boolean 
Dim Str1 As String 

    Str1 = "net use " & RemotePath & " /user:" & Ute & " " & Pw 
    Str1 = "cmd.exe /c " & Str1 
    Call MyShell(Str1, vbHide, True) 
    On Error Resume Next 
    RemoteLogin = ((GetAttr(RemotePath) And vbDirectory) = vbDirectory) 

End Function 

Sub MyShell(ByVal Percorso As String, ByVal windowstyle As Integer, ByVal Attendi As Boolean) 
    Dim wshell As Object 
    Set wshell = CreateObject("WScript.shell") 
    wshell.Run Percorso, windowstyle, Attendi 
    Set wshell = Nothing 
End Sub 
Verwandte Themen