首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SchemaClassName搜索AD DirectorySearcher

使用SchemaClassName搜索AD DirectorySearcher
EN

Stack Overflow用户
提问于 2022-08-08 20:14:49
回答 1查看 32关注 0票数 0

下面是我执行AD搜索的实现。

代码语言:javascript
复制
DirectoryEntry de = GetDirectoryEntry();
using (var Search = new DirectorySearcher(de))
{ 
   Search.Filter = "....";
   Search.PropertiesToLoad.Add("Name");
   Search.PropertiesToLoad.Add("distinguishedName");
   Search.PropertiesToLoad.Add("objectGUID");
   var results = Search.FindAll();
   //read properties here...     
   DirectoryEntry  resultde = result.GetDirectoryEntry();
    string schClassName = resultde.SchemaClassName;   //want to add SchemaClassName to PropertiesToLoad



}

我已经能够将namedistinguishedNameobjectGUID添加到DirectorySearcherPropertiesToLoad中。我还想读取SchemaClassName的值。现在我必须调用GetDirectoryEntry方法来读取它。是否可以将DirectorySearcher.SchemaClassName添加到PropertiesToLoad中而不是调用GetDirectoryEntry方法?还有其他更好的选择吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-09 13:27:13

您正在寻找objectClass属性。

但是,该属性是一个多值属性,它不仅包含对象的类,还包含超类。因此,用户对象将包含值toppersonorganizationalPersonuser

因此,如果要查找对象中最特定的类,请查看最后一个值。例如:

代码语言:javascript
复制
result.Properties["objectClass"][result.Properties["objectClass"].Count - 1]

更多阅读:对象类和对象类别

另外,请确保将Search.FindAll()放在using语句中。在文件备注一节中,它说:

由于实现限制,当垃圾回收时,SearchResultCollection类无法释放其所有非托管资源。若要防止内存泄漏,必须在不再需要SearchResultCollection对象时调用Dispose方法。

因此,处理这一点比处理DirectorySearcher更重要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73283526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档