天天看點

AD活動目錄操作類(VB.net)

Imports  System.DirectoryServices

AD活動目錄操作類(VB.net)

Imports  System.Data

AD活動目錄操作類(VB.net)

Imports  System

AD活動目錄操作類(VB.net)

Imports  Microsoft.VisualBasic

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

Public   Class ADHelper

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

    Public Shared ADPath As String = System.Configuration.ConfigurationManager.AppSettings.Get("ADPath")

AD活動目錄操作類(VB.net)

    Public Shared UserName As String

AD活動目錄操作類(VB.net)

    Public Shared PassWord As String

AD活動目錄操作類(VB.net)

    Public Enum ADAccountOptions

AD活動目錄操作類(VB.net)

        UF_TEMP_DUPLICATE_ACCOUNT = &H100

AD活動目錄操作類(VB.net)

        UF_NORMAL_ACCOUNT = &H200

AD活動目錄操作類(VB.net)

        UF_INTERDOMAIN_TRUST_ACCOUNT = &H800

AD活動目錄操作類(VB.net)

        UF_WORKSTATION_TRUST_ACCOUNT = &H1000

AD活動目錄操作類(VB.net)

        UF_SERVER_TRUST_ACCOUNT = &H2000

AD活動目錄操作類(VB.net)

        UF_DONT_EXPIRE_PASSWD = &H10000

AD活動目錄操作類(VB.net)

        UF_SCRIPT = &H1

AD活動目錄操作類(VB.net)

        UF_ACCOUNTDISABLE = &H2

AD活動目錄操作類(VB.net)

        UF_HOMEDIR_REQUIRED = &H8

AD活動目錄操作類(VB.net)

        UF_LOCKOUT = &H10

AD活動目錄操作類(VB.net)

        UF_PASSWD_NOTREQD = &H20

AD活動目錄操作類(VB.net)

        UF_PASSWD_CANT_CHANGE = &H40

AD活動目錄操作類(VB.net)

        UF_ACCOUNT_LOCKOUT = &H10

AD活動目錄操作類(VB.net)

        UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = &H80

AD活動目錄操作類(VB.net)

    End Enum

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

    Public Enum LoginResult

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

        LOGIN_OK = 0

AD活動目錄操作類(VB.net)

        LOGIN_USER_DOESNT_EXIST

AD活動目錄操作類(VB.net)

        LOGIN_USER_ACCOUNT_INACTIVE

AD活動目錄操作類(VB.net)

    End Enum

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

    Public Shared Function IsUserValid(ByVal UserName As String, ByVal PassWord As String) As Boolean

AD活動目錄操作類(VB.net)

        Dim deUser As DirectoryEntry

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

        deUser = New DirectoryEntry(ADPath, UserName, PassWord, AuthenticationTypes.Secure)

AD活動目錄操作類(VB.net)

        Try

AD活動目錄操作類(VB.net)

            Dim native As Object = deUser.NativeObject

AD活動目錄操作類(VB.net)

            Return True

AD活動目錄操作類(VB.net)

        Catch ex As Exception

AD活動目錄操作類(VB.net)

            Return False

AD活動目錄操作類(VB.net)

        Finally

AD活動目錄操作類(VB.net)

            deUser.Close()

AD活動目錄操作類(VB.net)

        End Try

AD活動目錄操作類(VB.net)

    End Function

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

    Public Shared Function IsAccountActive(ByVal userAccountControl As Integer) As Boolean

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

        Dim userAccountControl_Disabled As Integer = Convert.ToInt32(ADAccountOptions.UF_ACCOUNTDISABLE)

AD活動目錄操作類(VB.net)

        Dim flagExists As Integer = userAccountControl And userAccountControl_Disabled

AD活動目錄操作類(VB.net)

        If (flagExists > 0) Then

AD活動目錄操作類(VB.net)

            Return False

AD活動目錄操作類(VB.net)

        Else

AD活動目錄操作類(VB.net)

            Return True

AD活動目錄操作類(VB.net)

        End If

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

    End Function

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

    Public Shared Function Login(ByVal UserName As String, ByVal PassWord As String) As LoginResult

AD活動目錄操作類(VB.net)

        If (IsUserValid(UserName, PassWord)) Then

AD活動目錄操作類(VB.net)

            Dim de As DirectoryEntry = GetUser(UserName)

AD活動目錄操作類(VB.net)

            If (de IsNot DBNull.Value) Then

AD活動目錄操作類(VB.net)

                Dim userAccountControl As Integer = Convert.ToInt32(de.Properties("userAccountControl")(0))

AD活動目錄操作類(VB.net)

                de.Close()

AD活動目錄操作類(VB.net)

                If (Not IsAccountActive(userAccountControl)) Then

AD活動目錄操作類(VB.net)

                    Return LoginResult.LOGIN_USER_ACCOUNT_INACTIVE

AD活動目錄操作類(VB.net)

                Else

AD活動目錄操作類(VB.net)

                    Return LoginResult.LOGIN_OK

AD活動目錄操作類(VB.net)

                End If

AD活動目錄操作類(VB.net)

            Else

AD活動目錄操作類(VB.net)

                Return LoginResult.LOGIN_USER_DOESNT_EXIST

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

            End If

AD活動目錄操作類(VB.net)

        Else

AD活動目錄操作類(VB.net)

            Return LoginResult.LOGIN_USER_DOESNT_EXIST

AD活動目錄操作類(VB.net)

        End If

AD活動目錄操作類(VB.net)

    End Function

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

    Public Shared Function GetUser(ByVal UserName As String) As DirectoryEntry

AD活動目錄操作類(VB.net)

        Dim de As DirectoryEntry = GetDirectoryObject()

AD活動目錄操作類(VB.net)

        Dim deSearch As New DirectorySearcher

AD活動目錄操作類(VB.net)

        deSearch.SearchRoot = de

AD活動目錄操作類(VB.net)

        deSearch.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=" + UserName + "))"

AD活動目錄操作類(VB.net)

        deSearch.SearchScope = SearchScope.Subtree

AD活動目錄操作類(VB.net)

        Dim results As SearchResult = deSearch.FindOne

AD活動目錄操作類(VB.net)

        If (results IsNot DBNull.Value) Then

AD活動目錄操作類(VB.net)

            de = New DirectoryEntry(results.Path, UserName, PassWord, AuthenticationTypes.Secure)

AD活動目錄操作類(VB.net)

            Return de

AD活動目錄操作類(VB.net)

        Else

AD活動目錄操作類(VB.net)

            Return Nothing

AD活動目錄操作類(VB.net)

        End If

AD活動目錄操作類(VB.net)

    End Function

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

    Public Shared Function GetDirectoryObject() As DirectoryEntry

AD活動目錄操作類(VB.net)

        Dim oDe As DirectoryEntry

AD活動目錄操作類(VB.net)

        oDe = New DirectoryEntry(ADPath, UserName, PassWord, AuthenticationTypes.Secure)

AD活動目錄操作類(VB.net)

        Return oDe

AD活動目錄操作類(VB.net)

    End Function

AD活動目錄操作類(VB.net)
AD活動目錄操作類(VB.net)

    Public Shared Function GetProperty(ByVal searchResult As SearchResult, ByVal PropertyName As String) As String

AD活動目錄操作類(VB.net)

        If (searchResult.Properties.Contains(PropertyName)) Then

AD活動目錄操作類(VB.net)

            Return searchResult.Properties(PropertyName)(0).ToString

AD活動目錄操作類(VB.net)

        Else

AD活動目錄操作類(VB.net)

            Return String.Empty

AD活動目錄操作類(VB.net)

        End If

AD活動目錄操作類(VB.net)

    End Function

AD活動目錄操作類(VB.net)

    Public Shared Function test(ByVal UserName As String) As SearchResult

AD活動目錄操作類(VB.net)

        Dim de As DirectoryEntry = GetDirectoryObject()

AD活動目錄操作類(VB.net)

        Dim deSearch As New DirectorySearcher

AD活動目錄操作類(VB.net)

        deSearch.SearchRoot = de

AD活動目錄操作類(VB.net)

        deSearch.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=" + UserName + "))"

AD活動目錄操作類(VB.net)

        deSearch.SearchScope = SearchScope.Subtree

AD活動目錄操作類(VB.net)

        Dim results As SearchResult = deSearch.FindOne

AD活動目錄操作類(VB.net)

        If (results IsNot DBNull.Value) Then

AD活動目錄操作類(VB.net)

            Return results

AD活動目錄操作類(VB.net)

        Else

AD活動目錄操作類(VB.net)

            Return Nothing

AD活動目錄操作類(VB.net)

        End If

AD活動目錄操作類(VB.net)

    End Function

AD活動目錄操作類(VB.net)

    Public Shared Function nopassword(ByVal UserName As String) As SearchResult

AD活動目錄操作類(VB.net)

        Dim de As DirectoryEntry = New DirectoryEntry(ADPath)

AD活動目錄操作類(VB.net)

        Dim deSearch As New DirectorySearcher

AD活動目錄操作類(VB.net)

        deSearch.SearchRoot = de

AD活動目錄操作類(VB.net)

        deSearch.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=" + UserName + "))"

AD活動目錄操作類(VB.net)

        deSearch.SearchScope = SearchScope.Subtree

AD活動目錄操作類(VB.net)

        Dim results As SearchResult = deSearch.FindOne

AD活動目錄操作類(VB.net)

        If (results IsNot DBNull.Value) Then

AD活動目錄操作類(VB.net)

            Return results

AD活動目錄操作類(VB.net)

        Else

AD活動目錄操作類(VB.net)

            Return Nothing

AD活動目錄操作類(VB.net)

        End If

AD活動目錄操作類(VB.net)

    End Function

AD活動目錄操作類(VB.net)

End Class

AD活動目錄操作類(VB.net)

繼續閱讀