C# ActiveDirectory - check objectClass

本文关键字:objectClass check ActiveDirectory | 更新日期: 2023-09-27 18:12:11

我对Active Directory执行一个查询,它可以返回用户和组。

(&(|(&(objectCategory=person)(objectClass=user))(objectCLass=group))(...))

但是当我试图从结果集获得objectClass属性时,我等待获得"top"

DirectorySearcher searcher = new DirectorySearcher(baseDirEntry);
searcher.Filter = "(&(|(&(objectCategory=person)(objectClass=user))(objectCLass=group))(|(sAMAccountName=*{0}*)(displayName=*{0}*)(email=*{0}*)))";
//other props
searcher.PropertiesToLoad.Add(AdProperties.OBJECTCLASS);
SearchResultCollection userResult = searcher.FindAll();
foreach (SearchResult rs in userResult)
{
   string objectClass = GetProp(rs, AdProperties.OBJECTCLASS);//returns "top" every time
}

如何确定AD对象是用户还是组?

编辑ObjectCategory属性返回一个区别名,如

CN=Person(or Group),CN=Schema,CN=Configuration,DC=...,DC=...,DC=...

所以我可以解析字符串并获得第一个CN值,但这看起来不是最好的方法

C# ActiveDirectory - check objectClass

我认为问题可能是在您的GetProp方法中:objectClass是一个多值属性,可能在GetProp中您只是返回第一个值,这始终是"顶部"。

如果是这种情况,您也应该检查其他值。

否则,你能发布GetProp的实现吗?