zoukankan      html  css  js  c++  java
  • C#基础知识之DirectorySearcher 类

    活动目录(Active Directory)是从一个数据存储开始的,它采用了类似Exchange Server的数据存储,所以被称为Extensible Storage Service (ESS)。其特点是不需要事先定义数据库的参数,可以做到动态地增长,性能非常优良。这个数据存储之上已建立索引的,可以方便快速地搜索和定位。活动目录的分区是(Domain),一个域可以存储上百万的对象。域之间还有层次关系,可以建立域树和域森林,无限地扩展。 

    活动目录充分体现了微软产品的”ICE”,即集成性(Integration),深入性(Comprehensive),和易用性(Ease of Use)等优点。活动目录是一个完全可扩展,可伸缩的目录服务,既能满足商业ISP的需要,又能满足企业内部网和外联网的需要。 

    在.Net环境下操纵活动目录非常容易,其中提供了很多封装好的类用来操纵活动目录,这些类都存放在System.DirectoryServicess名称空间里。本文简要介绍一下如何使用这些DirectorySearcher类来读取活动目录中的信息。

     

      

     

    using (DirectoryEntry entry = new DirectoryEntry())
    {
        //entry.Path ="LDAP://域";
        DirectorySearcher mySearcher = new DirectorySearcher(entry);
        mySearcher.SearchScope = SearchScope.Subtree;
        mySearcher.ServerTimeLimit = TimeSpan.FromSeconds(1200);
        //mySearcher.ClientTimeout = TimeSpan.FromSeconds(1000);
        //默认的搜索结果最大数为1000,通过设置pagesize 属性来解决
        mySearcher.PageSize = 10000;
       //mySearcher.ServerTimeLimit = 500;
       //mySearcher.SizeLimit = 10000;
       mySearcher.Filter = "(&(objectClass=user)(|(sAMAccountName=T*)(sAMAccountName=A*)(sAMAccountName=M*)(sAMAccountName=K*)(sAMAccountName=Z*)))";
       //mySearcher.Filter = "(objectClass=user)";
       string enno = string.Empty;//工号
       string enemail = string.Empty;//邮箱
       foreach (SearchResult resEnt in mySearcher.FindAll())
       {
           enno = string.Empty;//工号
           enemail = string.Empty;//邮箱
           try
           {
               DirectoryEntry user = resEnt.GetDirectoryEntry();
               if (user.Properties.Contains("sAMAccountName"))
               {
                   enno = user.Properties["sAMAccountName"][0].ToString();
               }
               if (user.Properties.Contains("mail"))
               {
                   enemail = user.Properties["mail"][0].ToString();
               }
            }
            finally { }
        }
    }   
    View Code

    程序注解:

    ◆程序开始,实例化了一个DirectoryEntry类,其构造函数的参数是""; ◆然后又实例化了一个C# DirectorySearcher类,用来查询DirectoryEntry域中活动目录中的信息 ◆C# DirectorySearcher类的Filter属性用来设置查询的过滤条件,一般有以下三种: 1. objectClass=organizationalUnit 查询条件是所有的组织单元(OU) 2. objectClass=group 查询条件是所有的组(GROUP) 3. objectClass=user 查询条件是所有的用户(USER) 当然还可以设置其他的过滤条件,而且可以使用逻辑运算符,详情请参加MSDN ◆C# DirectorySearcher类的Findall方法用来递归的查找所有符合条件的对象。其返回结果是一个SearchResult类型的对象,这是一个集合类型。 ◆用Foreach语句访问集合中的所有对象,获得对象的信息。

  • 相关阅读:
    LeetCode 40. Combination Sum II
    LeetCode 39. Combination Sum
    #Python学习#python虚拟环境——virtualenv
    #阿里云#云服务器部署Django(基础篇)
    驱动调试之打印
    Linux内核源码阅读记录一之分析存储在不同段中的函数调用过程
    uevent机制
    字符设备的另一种写法
    DM9000C网卡驱动程序编写与测试
    网卡驱动程序框架以及虚拟网卡驱动程序的实现
  • 原文地址:https://www.cnblogs.com/qtiger/p/11177186.html
Copyright © 2011-2022 走看看