探索ActiveDirectory与C编程实践
立即解锁
发布时间: 2025-08-23 00:48:37 阅读量: 1 订阅数: 5 

### 探索 Active Directory 与 C# 编程实践
#### 1. Active Directory 概述
Active Directory 目前仅在 Windows 2000 中可用,这意味着若要进行相关操作,至少需要安装了 Active Directory 的 Windows 2000 Server。不过,Windows .NET Servers 会在不久后推出。
Active Directory 不仅可访问,还具有可扩展性。若想将某个对象暴露给网络,可扩展其架构,使任何能访问该 Active Directory 实现的人都能使用该对象。Active Directory 中的架构定义了可存储在目录中的所有对象类和属性,但这并不意味着架构中定义的所有对象都实际存在于 Active Directory 中,只是架构允许创建这些对象。对于每个对象类,架构还通过指定其有效或合法的父类,定义了该对象可在目录树中创建的位置。此外,类的内容由该类必须或可能包含的属性列表定义,这意味着 Active Directory 对象是一组命名的属性,可用于描述用户或打印机等网络上的物理实体。
简而言之,Active Directory 是基于 X.500 规范的网络目录服务,可使用基于客户端 - 服务器的 LDAP 目录服务协议进行访问。
#### 2. 以编程方式访问 Active Directory
与之前的 Windows 编程语言(如 Visual Basic 6.0)一样,也可以使用 C# 以编程方式访问 Active Directory。不同的是,C# 具有一些内置功能,可让你无需通过 Windows API 就能访问 Active Directory,而 System.DirectoryServices 命名空间提供了所需的一切。
#### 3. 研究 System.DirectoryServices 命名空间
System.DirectoryServices 命名空间包含许多可用于访问 Active Directory 的类,以下是该命名空间中一些重要类的介绍:
| 类名 | 描述 |
| ---- | ---- |
| DirectoryEntries | 该集合类包含 Active Directory 条目的子条目(DirectoryEntry.Children 属性),仅包含直接子项。 |
| DirectoryEntry | 封装 Active Directory 数据库层次结构中的对象或节点。 |
| DirectorySearcher | 用于使用 LDAP 协议对 Active Directory 执行查询。 |
| PropertyCollection | 包含单个 DirectoryEntry 类的所有属性(DirectoryEntry.Properties 属性)。 |
| PropertyValueCollection | 包含多值属性的值(DirectoryEntry.Properties.Values 属性)。 |
| ResultPropertyCollection | 包含 SearchResult 对象的属性(SearchResultCollection[0].Properties 属性)。 |
| ResultPropertyValueCollection | 包含 SearchResult 对象的值。 |
| SchemaNameCollection | 包含用于 DirectoryEntries 类的 SchemaFilter 属性的架构名称列表。 |
| SearchResult | 封装 Active Directory 数据库层次结构中的节点,作为 DirectorySearcher 类实例执行搜索的结果返回。 |
| SearchResultCollection | 包含使用 DirectorySearcher.FindAll 方法查询 Active Directory 层次结构时返回的 SearchResult 类实例。 |
| SortOption | 指定查询的排序方式。 |
使用这些类时,需注意以下限制:
- 计算机上必须安装 Active Directory 服务接口软件开发工具包(ADSI SDK)或 ADSI 运行时。若使用 Windows 2000,默认已安装;若使用早期版本的 Windows,可从 Microsoft 网站下载安装:http://www.microsoft.com/windows2000/techinfo/howitworks/activedirectory/adsilinks.asp。
- 计算机上必须安装目录服务提供程序,如 Active Directory 或 LDAP。
#### 4. 研究 DirectoryEntry 类
DirectoryEntry 类封装了 Active Directory 数据库层次结构中的对象,可用于绑定到 Active Directory 中的对象或操作对象属性。该类及其辅助类可与以下提供程序一起使用:IIS、LDAP、NDS 和 WinNT,未来可能会支持更多提供程序。
以下是 DirectoryEntry 类的非继承公共属性:
| 属性名 | 描述 |
| ---- | ---- |
| AuthenticationType | 返回或设置要使用的身份验证类型,值必须是 AuthenticationTypes 枚举的成员,默认值为 None,其他值包括 Anonymous、Delegation 等。 |
| Children | 只读属性,返回一个 DirectoryEntries 类(集合),包含 Active Directory 数据库层次结构中节点的子条目,仅返回直接子项。 |
| Guid | 返回 DirectoryEntry 类的全局唯一标识符,若绑定到 Active Directory 中的对象,建议使用 NativeGuid 属性,该属性为只读。 |
| Name | 只读属性,返回对象的名称,即 DirectoryEntry 对象在基础目录服务中显示的名称。SchemaClassName 属性和该属性共同使目录条目唯一。 |
| NativeGuid | 返回从提供程序返回的 DirectoryEntry 类的全局唯一标识符,该属性为只读。 |
| NativeObject | 只读属性,返回本地 ADSI 对象,可用于处理 COM 接口。 |
| Parent | 返回 DirectoryEntry 对象在 Active Directory 数据库层次结构中的父对象,该属性为只读。 |
| Password | 返回或设置客户端进行身份验证时使用的密码。当设置 Password 和 Username 属性时,从当前实例检索的所有其他 DirectoryEntry 类实例将自动使用相同的值。 |
| Path | 返回或设置 DirectoryEntry 类的路径,默认值为空字符串,用于在网络中唯一标识对象。 |
| Properties | 返回一个 PropertyCollection 类,包含已在 DirectoryEntry 对象上设置的属性。 |
| SchemaClassName | 返回用于 DirectoryEntry 对象的架构名称。 |
| SchemaEntry | 返回保存当前 DirectoryEntry 对象架构信息的 DirectoryEntry 对象。DirectoryEntry 类的 SchemaClassName 属性确定了该实例的有效属性(包括必需和可选属性)。 |
| UsePropertyCache | 返回或设置一个布尔值,指示每次操作后是否应提交缓存,默认值为 true。 |
| Username | 返回或设置用于客户端身份验证的用户名。当设置 Password 和 Username 属性时,从当前实例检索的所有其他 DirectoryEntry 类实例将自动使用相同的值。 |
以下是 DirectoryEntry 类的非继承公共方法:
| 方法名 | 描述 | 示例 |
| ---- | ---- | ---- |
| Close() | 关闭 Director
0
0
复制全文
相关推荐









