3

我知道SAMAccountName,現在想要填充反映此用戶組成員資格的整個目錄的組列表。這是我的開始,但我很難過:在VB.NET中查詢LDAP。我有用戶帳戶,並且我想要一個用戶組的列表

 Dim path As String = WebConfigurationManager.AppSettings("ldapPath") 
     Dim entry As New DirectoryEntry(path) 
     Dim search As DirectorySearcher = New DirectorySearcher(entry) 
     Dim groupList As StringBuilder = New StringBuilder() 
     search.Filter = "(SAMAccountName=" & _thisUser.UserName & ")" 
     search.PropertiesToLoad.Add("memberOf") 
     'search.SearchScope = SearchScope.Subtree 

     For Each res As SearchResult In search.FindAll 
     Next ''Just doing this so I can look at "res" objects in debug 

我不知道如何遍歷這個。請問,任何指針?

回答

4

如果您使用的是.NET 3.5及更高版本,則應該查看System.DirectoryServices.AccountManagement(S.DS.AM)命名空間。在這裏閱讀全部內容:

基本上,你可以定義域範圍內,並可以輕鬆地查找用戶和/或組AD:

// set up domain context 
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain)) 
{ 
    // find a user 
    UserPrincipal user = UserPrincipal.FindByIdentity(ctx, yourSamAccountName); 

    if(user != null) 
    { 
     var groups = user.GetGroups(); 

     // iterate over groups or do whatever else you need to do.... 
    } 
} 

的新的S.DS.AM可以很容易地與AD中的用戶和羣組玩耍!

+0

看起來它會做的伎倆。我會用我的發現回覆你。非常感謝。 – YogaMatt

+1

Hoorah!我不得不VB-ize它,但是是多麼神奇的指針,比你非常多。 – YogaMatt

0

memberOf屬性具有distinguished name語法,並且是該用戶是其成員的組的DN。換句話說,如果條目具有memberOf屬性,並且該屬性的值是有效的組DN,那麼用戶已經是該組的成員。

相關問題