Csharp/CSharp Tutorial/Directory Services/Search

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Search the directories

using System;
using System.DirectoryServices;
public class MainClass {
  static void Main(string[] args) {
    try
    {
      DirectoryEntry oRoot = new DirectoryEntry("LDAP://RootDSE");
      string searchOU = (string)oRoot.Properties["defaultnamingcontext"].Value;
      DirectoryEntry de = new DirectoryEntry("LDAP://CN=Users," + searchOU); 
      Console.WriteLine(oRoot.Name);
      oRoot.Close();
        
      DirectorySearcher search = new DirectorySearcher(de);
      search.Filter = "(CN=Administrator)";
      search.PropertiesToLoad.Add("distinguishedName");
      SearchResultCollection results = search.FindAll();
      
      string strRet="Not Found";
      foreach(SearchResult result in results)
      {
        DirectoryEntry data = result.GetDirectoryEntry();
        strRet = (string)data.Properties["distinguishedName"].Value;
        Console.WriteLine(strRet);
        data.Close();
      }
      de.Close();
      results.Dispose();
    }catch(Exception e){
      Console.WriteLine( e.Message);
    }
  }
}

Simple Search

using System;
using System.DirectoryServices;
class MainClass
{
   public static void Main()
   {
      DirectoryEntry root = new DirectoryEntry(
        "LDAP://192.168.1.100/DC=ispnet1,DC=net",
        "cn=Administrator, dc=ispnet1, dc=net", "password",
        AuthenticationTypes.ServerBind);
      DirectorySearcher searcher = new DirectorySearcher(root);
      searcher.Filter = "(&(objectClass=person)(sn=Name))";
      searcher.PropertiesToLoad.Add("cn");
      searcher.PropertiesToLoad.Add("Number");
      SearchResultCollection results = searcher.FindAll();
      foreach(SearchResult result in results)
      {
         string searchpath = result.Path;
         Console.WriteLine("path: {0}", searchpath);
         ResultPropertyCollection rpc = result.Properties;
         foreach(string property in rpc.PropertyNames)
         {
            foreach(object value in rpc[property])
               Console.WriteLine("  property = {0}  value = {1}", property, value);
         }
      } 
   }
}