我有一個Access應用程序,需要用戶輸入他們的Windows域用戶名和密碼才能進入。我用下面的VBA代碼來實現:VBA:使用Windows身份驗證登錄
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。
我不知道如何回答你的問題,但玩弄你的代碼,它看起來像我得到一個真正的函數,只要傳遞一個有效的strUserName和strDomain即使密碼是「」 –
這就像一擊或錯過。奇怪的行爲。 – Rick
我最終使用'選擇比較二進制'而不是'選項比較數據庫'推理是'選項比較數據庫'不能給你很好的控制CASES –