我有一个 Access 应用程序,需要用户输入他们的 Windows 域用户和密码才能进入。我使用以下 VBA 代码来完成此操作:
Function WindowsLogin(ByVal strUserName As String, ByVal strpassword As String, ByVal strDomain As String) As Boolean
'Authenticates user and password entered with Active Directory.
On Error GoTo IncorrectPassword
Dim oADsObject, oADsNamespace As Object
Dim strADsPath As String
strADsPath = "WinNT://" & strDomain
Set oADsObject = GetObject(strADsPath)
Set oADsNamespace = GetObject("WinNT:")
Set oADsObject = oADsNamespace.OpenDSObject(strADsPath, strDomain & "\" & strUserName, strpassword, 0)
WindowsLogin = True 'ACCESS GRANTED
ExitSub:
Exit Function
IncorrectPassword:
WindowsLogin = False 'ACCESS DENIED
Resume ExitSub
End Function
我注意到有时当信息输入正确时,访问被拒绝。我尝试调试一次,它给出了错误:“找不到网络路径。”就Set oADsObject = oADsNamespace.OpenDSObject)
行了。
不知道为什么有时会发生这种情况。改为转换为 LDAP 会更好吗?我已尝试但无法正确构建 LDAP URL。