庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>程序设计>C#语言>系统编程>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

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

 作者:王雷    日期:2005-8-8 9:54:37
字号选择〖 〗/ 双击滚屏 单击停止   
     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语句访问集合中的所有对象,获得对象的信息。
上一篇:用Visual C#来操作Clipboard    下一篇:C#下实现动态系统托盘图标  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 王雷
信息来源: 网络 录入时间: 2005-8-8 9:54:37
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿