BE在需要身份验证的共享文件夹上

时间:2016-04-26 13:27:07

标签: ms-access

在一个非常大的局域网中,我有共享受LDAP认证保护的文件夹。 我已将我的BE放在共享文件夹上,并允许适当的用户访问该文件夹。 在FE中,表格链接到BE,所以在我打开FE之前,我必须先打开(双击)共享文件夹(为了提供用户名和密码),然后关闭它。十分难看。 如何打开链接到受保护文件夹中的BE的FE而不必先打开该文件夹?

提前完成 马可

2 个答案:

答案 0 :(得分:1)

我解决了。打开FE后,我会显示一个要求输入用户名和密码的表单,然后将该凭据传递给以下函数。如果返回FALSE,则提供的凭据不正确。

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类似于“\\ fileServer \ SharedFolder”)

我不得不延迟2秒,因为在中等大的局域网中我需要时间来传播(我们使用SAMBA和LDAP)。 在延迟之后,我必须测试路径的开放性,因为如果提供的密码是正确的,也不是,那么Shell也不会返回任何结果。

HTH

答案 1 :(得分:0)

这是一个更好的解决方案,其中使用了Shell命令的同步版本(来自masterdrive.it的@Alex建议)。这里不需要强制延迟2秒。

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