C# ActiveDirectory - 检查对象类

标签 c# active-directory

我对 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 值,但这看起来不是最好的方法。

最佳答案

我认为问题可能出在您的 GetProp 方法中:objectClass 是一个多值属性,并且可能在 GetProp 中您只返回第一个值,即总是“顶”。

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

否则,能否请您发布 GetProp 的实现?

关于C# ActiveDirectory - 检查对象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32518416/

相关文章:

powershell递归检索组成员

c# - PowerShell 远程处理 Lync、Active Directory 搜索域 Controller 时出现错误 "-2147016672"

c# - C#从文本文件中读取Json数据

c# - 不能在 IEnumerable 中使用对泛型类型的约束?

C#建立SQL连接

C# - GroupPrincipal.GetMembers(true) - 哪个组?

tomcat - SPNEGO Kerberos 单点登录在 Tomcat 服务器的 AD 域中不起作用

c++ - 为什么我的 Active Directory 密码过滤器 DLL 中的用户名以 $ 结尾?

c# - 下载并实例化 COM 控件

C# 多线程使用 Task 类