如何获取人员活动目录组?

时间:2016-07-01 14:22:33

标签: vb.net active-directory asmx

我正在使用此asmx.VB代码来验证AD中的用户。我还要带回他们所属的团体。任何帮助,将不胜感激。

 <WebMethod(Description:="Checks User against Active Directory.", EnableSession:=False)> _
    Public Function CHECK_AD(ByVal userid As String, ByVal Password As String) As Integer
        Dim iErrorNumber As Integer
        Dim isPass As Boolean = False
        Try
            Dim pc As New PrincipalContext(ContextType.Domain, "SomeDomain")
            isPass = pc.ValidateCredentials(userid, Password, ContextOptions.Negotiate)
            If isPass = True Then
                iErrorNumber = 1
            Else
                iErrorNumber = 0
            End If
        Catch ex As Exception
            iErrorNumber = -1
        End Try
        Return iErrorNumber
    End Function

1 个答案:

答案 0 :(得分:0)

我有这个代码来获取活动目录中的用户属性,也许可以帮助你,只需添加一个按钮,如果你想取消注释前三个注释行并在声明后注释前三行代码。 (对不起,代码是西班牙语。)

Private Sub Button1_Click(sender As System.Object,e As System.EventArgs)处理Button1.Click

Dim objetoUsuario, gruposSeguridad
Dim ultimoInicioSesion As String
Dim dominio As String
Dim nombreUsuario As String
Dim estadoCuenta As String
Dim gruposSeguridadUsuario As String = ""

'dominio = InputBox("Nombre del dominio Windows Server", "")
dominio = Environment.UserDomainName
'nombreUsuario = InputBox("Nombre de usuario del dominio", "")
nombreUsuario = Environment.UserName
'   On Error GoTo cError

On Error Resume Next

objetoUsuario = GetObject("WinNT://" + dominio + "/" + nombreUsuario + ",user")
If Err.Number = 0 Then
    If objetoUsuario.AccountDisabled = True Then
        estadoCuenta = "Deshabilitado"
        ultimoInicioSesion = "No existe"
    Else
        estadoCuenta = "Habilitado"
        ultimoInicioSesion = objetoUsuario.Get("Lastlogin")
    End If

    gruposSeguridad = ""
    For Each gruposSeguridad In objetoUsuario.Groups
        If gruposSeguridadUsuario = "" Then
            gruposSeguridadUsuario = gruposSeguridad.Name
        Else
            gruposSeguridadUsuario = gruposSeguridadUsuario + ", " + gruposSeguridad.Name
        End If
    Next


    'Mostramos los datos del usuario
    MsgBox("Nombre completo: " & objetoUsuario.Get("Fullname") & vbCrLf & _
        "Descripción: " & objetoUsuario.Get("Description") & vbCrLf & _
        "Nombre: " & objetoUsuario.Get("Name") & vbCrLf & _
        "Carpeta de inicio: " & objetoUsuario.Get("HomeDirectory") & vbCrLf & _
        "Script de inicio: " & objetoUsuario.Get("LoginScript") & vbCrLf & _
        "Último inicio de sesión: " & ultimoInicioSesion & vbCrLf & _
        "Perfil: " & objetoUsuario.Get("Profile") & vbCrLf & _
        "Estado de la cuenta: " & estadoCuenta & vbCrLf & _
        "Grupos seguridad: " & gruposSeguridadUsuario, vbInformation + vbOKOnly)
    objetoUsuario = Nothing
Else
    MsgBox("No existe el usuario " + nombreUsuario + " o el dominio " + dominio, vbExclamation + vbOKOnly)
End If

'cSalir:
'    Exit Sub
'
'cError:
'    MsgBox "Error " + CStr(Err.Number) + " " + Err.Description
'    GoTo cSalir

End Sub