Can';t使用vb.net从AD获取属性
我使用下面的代码使用VB.NET1.1从广告中获取名字、姓氏、电子邮件和部门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 =
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中起作用。。(来源:)我在工作组工作,这可能是个问题吗?但我可以完美地验证广告登录,只是无法获得这些属性