我有一个访问应用程序,要求用户输入他们的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。