文章收藏-FAQ 位置:电脑学习网

在 .Net 环境下用 C# 操纵活动目录

    windows 2000 server在windows nt server 4.0的基础上,进一步发展了“活动目录(active directory)“。活动目录是从一个数据存储开始的。它采用了类似exchange server的数据存储,称为:extensible storage service (ess)。其特点是不需要事先定义数据库的参数,可以做到动态地增长,性能非常优良。这个数据存储之上已建立索引的,可以方便快速地搜索和定位。活动目录的分区是“域(domain)“,一个域可以存储上百万的对象。域之间还有层次关系,可以建立域树和域森林,无限地扩展。

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

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

    注:我们假设您已经对活动目录的概念有了基本的了解。

    我的网络环境由两个域控制器,和数台win2000工作站组成,安装了活动目录用来保存域里的一切信息,域名是szcs。

    下面我们开始建立一个简单的控制台应用程序,来读取活动目录的信息。

    第一步:建立项目(这就不多说了)

    第二步:添加引用

    由于操纵活动目录的类都存放在system.directoryservices.dll文件里。所以,我们必须在项目中添加对它的引用。

    方法:在菜单中,选择 项目-引用,选择system.directoryservices.dll,确定。

    第三步:引用名称空间

    方法:在程序的开头出添加下面程序

    using system.directoryservices;

    第四步:编写程序

    下面是一个范例程序

    namespace adsample
    {
         /// 〈summary〉
         /// summary description for class1.
         /// 〈/summary〉
         class class1
         {
             static void main(string[] args)
             {
            // todo: add code to start application here
                  getallou();
                  console.readline();
             }

             //获取目录中需要的组织单元(ou)
             public static void getallou()
             {
                directoryentry entry = new directoryentry(“ldap://szcs“);
                directorysearcher mysearcher = new directorysearcher(entry);
                mysearcher.filter = (“(objectclass=organizationalunit)“);
                 foreach(searchresult resent in mysearcher.findall())
                 {
                      console.write(resent.getdirectoryentry().name.tostring());
                      console.writeline(“\t“resent.getdirectoryentry().name.tostring());
                 }//end foreach

             }//end getallou

         }//end class

    }//end namespace

    程序注解:

     程序开始,实例化了一个directoryentry类,其构造函数的参数是“ldap://szcs“,这里szcs是域名。
     然后又实例化了一个directorysearcher类,用来查询szcs域中活动目录中的信息,其构造函数的参数是一个directoryentry类的实例对象。
     directorysearcher类的filter属性用来设置查询的过滤条件,一般有以下三种:

    1.objectclass=organizationalunit    查询条件是所有的组织单元(ou)
    2.objectclass=group                 查询条件是所有的组(group)
    3.objectclass=user                  查询条件是所有的用户(user)

    当然还可以设置其他的过滤条件,而且可以使用逻辑运算符,详情请参加msdn

   directorysearcher类的findall方法用来递归的查找所有符合条件的对象。其返回结果是一个searchresult类型的对象,这是一个集合类型。

   用foreach语句访问集合中的所有对象,获得对象的信息。

     [文章来源:“十万个为什么”电脑学习网]
     [网络地址:http://why100000.com]
     [版权声明:除本站部分特别声明禁止转载的专稿外,其他的文章可以自由转载,但请务必注明出处和原始作者。本站文章版权归文章原作者所有。如果本站转载的文章有版权问题请联系本站,我们会尽快予以更正。]
 

【字体:[大] [中] [小] 【加入收藏】 【发表评论】 【关闭本窗口】

Copyright © “十万个为什么”电脑学习网 2000-2007 陕ICP备06007929号
站务联系:MSN & Email:zhangking2008@gmail.com  QQ:9365822