C# Active Directory针对DirectorySearcher和PrincipalSearcher的不同结果
我在C#中查询Active Directory时遇到了一个奇怪的问题 但结果并不相同:C# Active Directory针对DirectorySearcher和PrincipalSearcher的不同结果,c#,search,active-directory,C#,Search,Active Directory,我在C#中查询Active Directory时遇到了一个奇怪的问题 但结果并不相同: PrincipalSearcher返回14个组 DirectorySearcher返回12个组 这是虫子还是我错过了什么 谢谢哦,我的天啊,我的扩展方法有错误(i0) { 对于(int i=0;i
返回14个组PrincipalSearcher
返回12个组DirectorySearcher
谢谢哦,我的天啊,我的扩展方法有错误(i
公共静态列表GetPropertyValue(此SearchResult SearchResult,字符串属性)
{
var prop=searchResult.Properties[property];
var results=新列表();
if(prop!=null&&prop.Count>0)
{
对于(int i=0;i
很抱歉问了个愚蠢的问题。那么,你能找出
PrincipalSearcher
另外返回的是哪两组吗??我相信PrincipalSearcher
也会返回用户的“主要组”——这不是DirectorySearcher
代码返回的。但第二组是什么——不知道。尝试列出两次搜索的结果,并将结果发布在此处!我最感兴趣的是看到结果!第一组-有趣的想法,第二组是域用户(全局单位)。嗯,这里有没有机会用目录搜索器加载主组?嗯,域用户
是用户帐户的默认“主组”。
var ctx = new PrincipalContext(ContextType.Domain, "adr", "usr", "pwd");
var entry = new DirectoryEntry("LDAP://" + adr, usr, pwd);
var searcher = new DirectorySearcher(entry) { Filter = "(&(sAMAccountName=user_to_search))", PageSize = 2000 };
foreach (SearchResult searchUser in searcher.FindAll())
{
// groups
var groups = searchUser.GetPropertyValues("memberof");
}
var groups = UserPrincipal.FindByIdentity(ctx, "usr_to_search").GetGroups(ctx).ToList();
public static List<string> GetPropertyValues(this SearchResult searchResult,string property)
{
var prop = searchResult.Properties[property];
var results = new List<string>();
if (prop != null && prop.Count > 0)
{
for (int i = 0; i < prop.Count - 1; i++)
{
results.Add(prop[i].ToString());
}
}
return results;
}