Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用vb.net从AD获取属性_Vb.net_Active Directory_Attributes_Ldap - Fatal编程技术网

Can';t使用vb.net从AD获取属性

Can';t使用vb.net从AD获取属性,vb.net,active-directory,attributes,ldap,Vb.net,Active Directory,Attributes,Ldap,我使用下面的代码使用VB.NET1.1从广告中获取名字、姓氏、电子邮件和部门 Public Shared Function GetAttribute(ByVal username As String, ByVal pwd As String) As UserInfo Dim objUserInfo As New UserInfo Dim ObjFirstName As String = "" Dim ObjLastName As String =

我使用下面的代码使用VB.NET1.1从广告中获取名字、姓氏、电子邮件和部门

Public Shared Function GetAttribute(ByVal username As String, ByVal pwd As String) As UserInfo
        Dim objUserInfo As New UserInfo
        Dim ObjFirstName As String = ""
        Dim ObjLastName As String = String.Empty
        Dim ObjEmail As String = ""
        Dim objDepartment As String = ""
        Dim Success As Boolean = False

        Dim LDAPAddress As String = ConfigurationSettings.AppSettings.Get("LDAPAddress")
        Dim Entry As New System.DirectoryServices.DirectoryEntry(LDAPAddress, username, pwd)
        Dim Searcher As New System.DirectoryServices.DirectorySearcher(Entry)
        Searcher.SearchScope = DirectoryServices.SearchScope.OneLevel
        Dim Filter As String = "(samAccountName=" & username & ")"
        Dim findUser As DirectorySearcher = New DirectorySearcher(Entry, Filter)
        Dim results As SearchResultCollection = findUser.FindAll


        Try
            Dim Resultsx As System.DirectoryServices.SearchResult = Searcher.FindOne
            Success = Not (Resultsx Is Nothing)

            findUser.PropertiesToLoad.Add("name")
            Dim name As String = DirectCast(Resultsx.Properties(name)(0), String)

            Dim de As System.DirectoryServices.DirectoryEntry = Resultsx.GetDirectoryEntry()
            Dim gg = de.Properties.PropertyNames()

            For Each Onn As String In gg
                Dim str As String = String.Format("{0}", Onn)
            Next

            Try
                ObjFirstName = de.Properties("GivenName").Value.ToString()


                ObjEmail = de.Properties("mail").Value.ToString()

                ObjLastName = de.Properties("sn").Value.ToString()
                objDepartment = de.Properties("department").Value.ToString()

            Catch ex As Exception
                ObjFirstName = de.Properties("DisplayName").Value.ToString()
            End Try
但我无法获得这些属性。在

Dim str As String=String.Format(“{0}”,Onn)


只有15个属性,没有名字、姓氏、电子邮件和部门。我做错了什么?

您的代码虽然过时,但乍一看还是不错的。如果你坚持要继续你的代码,我稍后会看一看

同时,此代码应适合您的情况:

    Dim user As DirectoryEntry = New DirectoryEntry("UserDN")
    Dim src As DirectorySearcher = New DirectorySearcher(user, "(&(objectClass=user)(objectCategory=Person))")

    src.PropertiesToLoad.Add("sn")
    src.PropertiesToLoad.Add("givenName")
    src.PropertiesToLoad.Add("mail")
    src.PropertiesToLoad.Add("department")

    Dim res As SearchResult = src.FindOne

    Console.WriteLine(res.Properties("sn")(0))
    Console.WriteLine(res.Properties("givenName")(0))
    Console.WriteLine(res.Properties("mail")(0))
    Console.WriteLine(res.Properties("department")(0))

    Console.ReadLine()

您的代码虽然过时,但乍一看还是不错的。如果你坚持要继续你的代码,我稍后会看一看

同时,此代码应适合您的情况:

    Dim user As DirectoryEntry = New DirectoryEntry("UserDN")
    Dim src As DirectorySearcher = New DirectorySearcher(user, "(&(objectClass=user)(objectCategory=Person))")

    src.PropertiesToLoad.Add("sn")
    src.PropertiesToLoad.Add("givenName")
    src.PropertiesToLoad.Add("mail")
    src.PropertiesToLoad.Add("department")

    Dim res As SearchResult = src.FindOne

    Console.WriteLine(res.Properties("sn")(0))
    Console.WriteLine(res.Properties("givenName")(0))
    Console.WriteLine(res.Properties("mail")(0))
    Console.WriteLine(res.Properties("department")(0))

    Console.ReadLine()

非常感谢。我尝试了你的代码,但没有成功。它说“索引超出范围。必须为非负数且小于集合的大小。”@C.PurS这是错误消息,如果您定义的用户的某个属性为空。是的,我做错了什么。当我使用VB2005时,它现在运行良好。但是在.net 1.1中仍然不起作用,实际上它也应该在.net 1.1中起作用。。(来源:)我在工作组工作,这可能是个问题吗?但我可以完美地验证广告登录,只是无法获取这些属性谢谢。我尝试了你的代码,但没有成功。它说“索引超出范围。必须为非负数且小于集合的大小。”@C.PurS这是错误消息,如果您定义的用户的某个属性为空。是的,我做错了什么。当我使用VB2005时,它现在运行良好。但是在.net 1.1中仍然不起作用,实际上它也应该在.net 1.1中起作用。。(来源:)我在工作组工作,这可能是个问题吗?但我可以完美地验证广告登录,只是无法获得这些属性