C# 限制LDAP查询中返回的属性

C# 限制LDAP查询中返回的属性,c#,.net,active-directory,ldap,directoryservices,C#,.net,Active Directory,Ldap,Directoryservices,如何限制通过System.DirectoryServices在LDAP查询中返回的属性 我一直在使用DirectorySearcher并添加要加载到DirectorySearcher.PropertiesToLoad的属性。问题是,这只是确保添加的属性包括在DirectoryEntry.properties以及一些默认列表中。是否有任何方法可以指定要返回的唯一属性 DirectoryEntry base = new DiectoryEntry(rootPath, null, null, Auth

如何限制通过System.DirectoryServices在LDAP查询中返回的属性

我一直在使用DirectorySearcher并添加要加载到DirectorySearcher.PropertiesToLoad的属性。问题是,这只是确保添加的属性包括在DirectoryEntry.properties以及一些默认列表中。是否有任何方法可以指定要返回的唯一属性

DirectoryEntry base = new DiectoryEntry(rootPath, null, null, AuthenticationTypes.FastBind);
DirectorySearcher groupSearcher = new DirectorySearcher(base);
groupSearcher.Filter = "(objectClass=group)";
groupSearcher.PropertiesToLoad.Add("distinguishedName");
groupSearcher.PropertiesToLoad.Add("description");
foreach (SearchResult groupSr in groupDs.FindAll())
...

在foreach循环中,当我获得groupdirectoryEntry时,我可以访问大约16个不同的属性,而不仅仅是我指定的两个(discrimitedName,description)您要限制的是
搜索结果中可用/填充的属性,您可以在
foreach
循环中直接访问这些属性:

DirectoryEntry baseEntry = new DirectoryEntry(rootPath, null, null, AuthenticationTypes.FastBind);

DirectorySearcher groupSearcher = new DirectorySearcher(baseEntry);
groupSearcher.Filter = "(objectClass=group)";

groupSearcher.PropertiesToLoad.Add("distinguishedName");
groupSearcher.PropertiesToLoad.Add("description");

foreach (SearchResult groupSr in groupSearcher.FindAll())
{
   if(groupSr.Properties["description"] != null && groupSr.Properties["description"].Count > 0)
   {
      string description = groupSr.Properties["description"][0].ToString();
   }

  .....
} 
您不能限制实际的
目录条目
-因此,如果您为每个
搜索结果抓取目录条目
-您可以完全访问所有内容。但关键是,您可以定义所需的属性,并直接访问
搜索结果
上的而不必返回底层的
目录条目