C# 获取具有嵌套组的AD中的用户组
我不知道“嵌套”是否是我所需要的词,但以下是解释: 我有一个用户,“John”。“约翰”是“A”组的成员。“B”组将“A”组作为成员 因此,及物动词“John”也应该是“B”组的成员 当我检索John的组时,我只得到“A”,而不是“B”,这样做:C# 获取具有嵌套组的AD中的用户组,c#,active-directory,adgroup,C#,Active Directory,Adgroup,我不知道“嵌套”是否是我所需要的词,但以下是解释: 我有一个用户,“John”。“约翰”是“A”组的成员。“B”组将“A”组作为成员 因此,及物动词“John”也应该是“B”组的成员 当我检索John的组时,我只得到“A”,而不是“B”,这样做: DirectorySearcher searcher = new DirectorySearcher(); DirectoryEntry rootEntry = new DirectoryEntry(_ldap, _loginName, _passwo
DirectorySearcher searcher = new DirectorySearcher();
DirectoryEntry rootEntry = new DirectoryEntry(_ldap, _loginName, _password, AuthenticationTypes.ReadonlyServer);
searcher.SearchRoot = rootEntry;
searcher.SearchScope = SearchScope.Subtree;
searcher.Filter = "(&(sAMAccountName=" + filter.Split('\\')[1] + ")(objectClass=user))";
searcher.PropertiesToLoad.Add("memberOf");
searcher.PropertiesToLoad.Add("displayname");
SearchResult sr = searcher.FindOne();
我怎样才能做到这一点
谢谢大家! 我最后使用了用户的“tokenGroups”属性,它似乎返回了用户所在的所有组,甚至是他所属的组
这是我的密码:
DirectorySearcher searcher = new DirectorySearcher();
DirectoryEntry rootEntry = new DirectoryEntry(_ldap, _loginName, _password, AuthenticationTypes.ReadonlyServer);
searcher.SearchRoot = rootEntry;
searcher.SearchScope = SearchScope.Subtree;
searcher.Filter = "(&(sAMAccountName=" + filter.Split('\\')[1] + ")(objectClass=user))";
searcher.PropertiesToLoad.Add("memberOf");
searcher.PropertiesToLoad.Add("displayname");
SearchResult sr = searcher.FindOne();
DirectoryEntry userDirectoryEntry = result.GetDirectoryEntry();
userDirectoryEntry.RefreshCache(new string[] { "tokenGroups" });
foreach (byte[] byteEntry in userDirectoryEntry.Properties["tokenGroups"])
{
if (CompareByteArrays(byteEntry, objectSid))
{
isMember = true;
break;
}
}
它是和链接的混合,其中objectSid是我按名称查找的组的objectSid
非常感谢你的帮助 查看之前发布的
Nicole
这不是同一件事,因为我从用户开始,我得到了它的直接组,我需要知道这些组中是否有任何一个同时是另一个组的成员..这是您的筛选器中的一个案例输入错误/胖指吗=“(&(sAmAccountName
不确定它是否重要,但我认为它应该是sAmAccountName
也可以添加&&(objectClass=groups))
嘿,用PrincipalContext检查一下,我不确定我之前所做的是否有用