Visual C#编写网络应用程序一般会使用到.Net FrameWork SDK中提供的二个重要的网络命名空间"System.Net"和"System.Net.Sockets"
Visual C#编写网络应用程序一般会使用到.Net FrameWork SDK中提供的二个重要的网络命名空间"System.Net"和"System.Net.Sockets"。其实Visual C#还是可以通过调用其他命名空间中的类库来实现很多有用的网络功能,最常见的命名空间就是"System.DirectoryServices","System.DirectoryServices"命名空间定义了"DirectoryEntry"和"DirectorySearcher"类,通过它们能够访问 Active Directory服务接口(简称ADSI)。Active Directory服务接口提供一种构造复杂计算机网络的简单方法。Active Directory服务接口系统以分层树状结构排列。每个节点表示网络上的一个资源或服务(对应网络中的域或工作组),并且这个节点包含一组可检索和操作的属性(对应网络中的主机)。本文就是通过它们来实现一个比较有用的网络功能--构建一个网络组成的计算机树形结构图。
一.Active Directory服务接口和DirectoryEntry类 Active Directory服务接口是Microsoft Windows Active Directory的编程接口。它允许应用程序使用单个接口与网络上的不同目录进行交互。Visual C#是通过创建DirectoryEntry和 DirectorySearcher能够轻松访问这个接口。而这种操作对其他编程语言而言,却意味着要调用需要WinAPI函数。
Active Directory服务接口可以实现很多操作,本文所实现的访问Active Directory树,以构建网络配置的计算机分层树形结构图,只是其中的一个很小的部分。若要使用Active Directory服务接口,必须在客户端计算机上安装 ADSI 2.5或更高版本。Windows 2000自动安装了ADSI 2.5,而对Win 98及以下的系统,则没有安装ADSI 2.5,这也就是下面介绍的这个网络功能无法获得系统是Win 98及以下操作系统在网络树形图对应的位置。所以下面介绍的网络功能成功构建网络的计算机树形图前提之一就是网络上的计算机的操作系统在Windows 2000及以上。
由于本文只使用了DirectoryEntry类,故只介绍DirectoryEntry的结构和使用方法,表01和表02是DirectoryEntry类常用属性、常用方法及其说明:
属性 |
说明 |
AuthenticationType |
获取或设置要使用的身份验证的类型。 |
Children |
获取DirectoryEntries实例,它包含Active |
Name |
获取用基础目录服务命名的对象的名称。 |
NativeObject |
获取本机Active Directory服务接口(ADSI)对象。 |
Parent |
获取Active Directory层次结构中的此项的父级。 |
Password |
获取或设置在对客户端进行身份验证时使用的密码。 |
Path |
获取或设置此DirectoryEntry的路径。 |
Properties |
获取在此对象上设置的属性的PropertyCollection。 |
SchemaClassName |
获取用于此DirectoryEntry的架构的名称。 |
SchemaEntry |
获取DirectoryEntry,它保存此项的架构信息。项的架构确定其强制属性和可选属性的名称的列表。 |
UsePropertyCache |
获取或设置一个值,该值指示在每次运算之后是否应提交缓存。 |
Username |
获取或设置在对客户端进行身份验证时使用的用户名。 |
表01:DirectoryEntry类的常用属性及其说明
方法 |
说明 |
Close |
关闭DirectoryEntry并释放与此组件关联的任何系统资源。 |
CommitChanges |
保存对Active |
CopyTo |
创建此项的副本,并将其作为指定父级的子项。 |
DeleteTree |
从Active Directory层次结构中删除此项及其整个子树。 |
Exists |
搜索指定路径处的目录存储区,以查看是否存在项。 |
Invoke |
在本机Active Directory上调用方法。 |
MoveTo |
将此项移至指定父级。 |
RefreshCache |
将此目录项的属性值加载到属性缓存中。 |
Rename |
更改此项的名称。 |
表02:DirectoryEntry类的常用方法及其说明
二.Visual C#使用ADSI构建网络计算机树形图 创建DirectoryEntry类实例后,并为该实例指定一个路径,指示所访问的系统上使用的提供程序的类型以及要绑定到的对象。表03为DirectoryEntry类可以访问的服务提供程序以及每种服务提供程序的标识符。
服务提供程序 |
路径标识符 |
Windows 2000或Windows XP |
WinNT://path |
轻量目录访问协议(LDAP) |
LDAP://path |
Novell NetWare目录服务 |
NDS://path |
Novell Netware 3.x |
NWCOMPAT://path |
表03:DirectoryEntry类访问的服务提供程序以及每种服务提供程序的标识符
当创建DirectoryEntry类实例,并把此实例绑定到指定路径的Active Directory中的节点。如果是此节点对应的是Windows NT服务提供程序,那就可以访问此节点下域、计算机、打印队列和会话。本文就是通过DirectoryEntry此种功能访问网络中计算机,从而构建网络计算机树形图的。下面就来介绍具体的实现方法。
三.本文中介绍的程序设计及运行环境 (1).微软视窗2000 服务器版。
(2).Visual Studio .Net 2003企业结构版,.Net Framework SDK 4322。