2010-09-07 100 views
1

我使用以下代码,它可以将用户登录到在VB.NET中构建的应用程序与活动目录。检索用户信息,并检查是否在使用VB.NET的活动目录中的组的成员

此代码很好,但我需要检索用户的名字,姓氏,显示名称,并检查用户是否属于某个组。

我试过很多形式的adResults.Property(“displayname”).toString()之类的东西,但不能让它正常工作。

任何人有任何想法如何做我想要做的?

下面是我现在使用的代码,并提前致谢。

Public Function ValidateActiveDirectoryLogin(ByVal sDomain As String, ByVal sUserName As String, ByVal sPassword As String) As Boolean 

    Dim bSuccess As Boolean = False 
    Dim adEntry As New System.DirectoryServices.DirectoryEntry("LDAP://" & sDomain, sUserName, sPassword) 
    Dim adSearcher As New System.DirectoryServices.DirectorySearcher(adEntry) 
    adSearcher.SearchScope = DirectoryServices.SearchScope.OneLevel 
    Try 
     Dim adResults As System.DirectoryServices.SearchResult = adSearcher.FindOne 
     bSuccess = Not (adResults Is Nothing) 
    Catch ex As Exception 
     bSuccess = False 
     MsgBox("Error") 
    End Try 

    Return bSuccess 

End Function 

回答

4

查看System.DirectoryServices.AccountManagemment命名空间。 userprincipal对象拥有您所需要的一切以及更多内容。 Here's an explanation关于如何使用这个API。

编辑:实际上使用真的很简单。看看此示例代码:

Dim userName = Environment.UserName 

' create a domain context 
Dim DC = New PrincipalContext(ContextType.Domain) 

' find a user in the domain 
Dim user = UserPrincipal.FindByIdentity(DC, userName) 

' get the user's groups 
Dim groups = user.GetGroups() 

' get the user's first and last name 
Dim firstName = user.GivenName 
Dim lastName = user.SurName 

' get the distinguishednames for all groups of the user 
Dim groupNames = From g in groups Select g.DistinguishedName 
' etc... 
+0

事实上,那绝对是超过我寻找,但如果它是获得我所需要的唯一方法我肯定会看看它,但无论如何,从System.DirectoryServices.SearchResult对象中检索用户信息吗?尽可能简单地保持它是很好的。谢谢=) – Tom 2010-09-07 20:25:37

+0

@Tom它真的更简单实际使用,看看我的编辑 – jeroenh 2010-09-08 07:39:17

+0

哇,这很容易。谢谢。 – Tom 2010-09-08 13:19:22

0

..和快速抛售组名的内容(从Jeroenh的brillaint回答)到一个列表框:

ListBox1.DataSource = groupnames.ToList() 
相关问题