Csharp/CSharp Tutorial/Directory Services/Search
Search the directories
<source lang="csharp">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); } }
}</source>
Simple Search
<source lang="csharp">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); } } }
}</source>