का उपयोग करके लॉगिन करें मेरे पास एक एक्सेस ऐप है जिसके लिए उपयोगकर्ता को अपने विंडोज डोमेन उपयोगकर्ता और पासवर्ड दर्ज करने की आवश्यकता है। मैं यह पूरा करने के निम्नलिखित 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)
लाइन पर नेटवर्क पथ नहीं मिला।
यह सुनिश्चित नहीं है कि यह कभी-कभी क्यों होता है। क्या इसके बजाय एलडीएपी में परिवर्तित करना बेहतर है? मैंने कोशिश की है लेकिन एलडीएपी यूआरएल का सही ढंग से निर्माण नहीं कर सकता।
मुझे नहीं पता कि आपके प्रश्न का उत्तर कैसे दिया जाए, लेकिन आपके कोड के साथ खेलना ऐसा लगता है कि जब तक एक वैध strUserName और strDomain पास होता है, तब भी जब तक पासवर्ड –
होता है तो यह आपके फ़ंक्शन पर एक सत्य प्राप्त करता है एक हिट या मिस। अजीब सा व्यवहार। – Rick
मैंने 'विकल्प तुलना डेटाबेस की तुलना में 'विकल्प तुलना बाइनरी' का उपयोग करके समाप्त किया है, तर्क है कि 'विकल्प डेटाबेस की तुलना करें' आपको सीएएसईएस –