Тестирование имени пользователя / пароля для домена Active Directory в VBScript? - PullRequest
2 голосов
/ 04 октября 2010

Мне нужно протестировать пару имени пользователя и пароля для данного домена в VBScript. Сценарий будет знать имя пользователя, пароль и домен, для которого он должен проверить доступ, и все, что мне нужно, - это истинное или ложное значение относительно того, действительна ли учетная запись.

Кто-нибудь может предложить хороший способ сделать это? Спасибо!

Ответы [ 4 ]

5 голосов
/ 10 декабря 2013

Возникла проблема с опубликованным fnCheckAccess (strDomain, strUserID, strUserPWD), поскольку в структуре OU моего домена нет пользователей в OU = Users. На основе MSDN вышла статья, которая должна работать на любом домене:

    'http://msdn.microsoft.com/en-us/library/windows/desktop/aa706065%28v=vs.85%29.aspx
    Set objNetwork = CreateObject("WScript.Network")
    strDomain = objNetwork.UserDomain
    Const ADS_SECURE_AUTHENTICATION = 1
    strUsername=InputBox("Enter Username:")
    strPassword=InputBox("Enter Password:")
    Set objDS = GetObject("LDAP:")
    On Error Resume Next
    Set objDomain = objDS.OpenDSObject("LDAP://" & strDomain, strUsername, strPassword, ADS_SECURE_AUTHENTICATION)
    If Err.Number Then
        WScript.Echo _
            "For user:" & vbCrLf & _
            "   " & strDomain & "\" & strUsername & vbCrLf & _ 
            "Error Number:" & vbCrLf & _
            "   " & Err.Number & vbCrLf & _
            "Error Description:" & vbCrLf & _
            "   " & Err.Description
    Else
        WScript.Echo _
            "Valid password entered for user" & vbCrLf & _
            "   " & strDomain & "\" & strUsername
    End If
    On Error Goto 0
4 голосов
/ 04 октября 2010

Следующая функция будет проверять имя пользователя / пароль для данного домена:

function fnCheckAccess(strDomain, strUserID, strUserPWD)

const ADS_SECURE_AUTHENTICATION = &h0001
const ADS_CHASE_REFERRALS_ALWAYS = &H60

dim objDSO
dim objUser
dim strPath

strPath = "LDAP://" & strDomain & "/OU=Users,DC=" & strDomain

On Error Resume Next
set objDSO = GetObject("LDAP:")
set objUser = objDSO.OpenDSObject (strPath, strUserID, strUserPWD, ADS_SECURE_AUTHENTICATION OR ADS_CHASE_REFERRALS_ALWAYS)
if Err.Number <> 0 then
    MsgBox "Incorrect Password for " & g_strDomain & "\" & g_strUserID & "." & vbCRLF & vbCRLF & "Error " & Err.Number & ": " & Err.Description, 16, "Access Denied"
    fnCheckAccess = False
else
    fnCheckAccess = True
end if
Err.Clear
On Error Goto 0

set objDSO = Nothing
set objUser = Nothing

end function
2 голосов
/ 09 ноября 2012

Это не «одобренный Microsoft» метод проверки учетных данных:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa706065(v=vs.85).aspx

API «Вход в систему» ​​должен хорошо работать в операционных системах XP +.

Следующая статья была также очень полезна для выяснения этого (VB.NET):

http://codingforpassion.blogspot.com/2011/07/windows-logon-api-for-net.html

0 голосов
/ 26 мая 2015
runas /u:domain\user notepad.exe

делает трюк

...