3

SAMAccountName を知っているので、ディレクトリ全体でこのユーザーのグループ メンバーシップを反映するエントリをグループのリストに入力したいと考えています。これが私のスタートですが、私は困惑しています:

        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

2 に答える 2

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 でユーザーやグループを簡単に操作できます。

于 2013-07-08T16:05:51.900 に答える
0

memberOf属性には構文があり、そのdistinguished nameユーザーがメンバーであるグループの DN です。つまり、エントリにmemberOf属性があり、その属性の値が有効なグループ DN である場合、ユーザーはすでにそのグループのメンバーです。

于 2013-07-08T16:04:56.610 に答える