### DirectoryEntry对象知识点详解 #### 一、DirectoryEntry对象简介 `DirectoryEntry`对象是.NET框架中的一个重要组件,主要用于操作Active Directory(活动目录)或通用目录服务。它提供了一种简单的方法来访问和管理目录服务中的信息。通过使用`DirectoryEntry`对象,开发人员能够执行诸如读取、写入、添加、删除以及修改目录服务中的对象等操作。 #### 二、DirectoryEntry对象的构造函数 `DirectoryEntry`对象可以通过多种方式创建实例: - **路径字符串构造**:通过指定一个路径字符串来创建`DirectoryEntry`对象,该路径字符串可以是LDAP URL格式。 ```csharp DirectoryEntry objDE = new DirectoryEntry("LDAP://DC=onecity,DC=corp,DC=fabrikam,DC=com"); ``` - **无参数构造**:不指定任何路径,默认连接到本地计算机的默认命名上下文。 ```csharp DirectoryEntry objDE = new DirectoryEntry(); ``` - **指定身份验证信息**:还可以在创建`DirectoryEntry`对象时指定用户名和密码,以便进行身份验证。 ```csharp DirectoryEntry objDE = new DirectoryEntry("LDAP://DC=onecity,DC=corp,DC=fabrikam,DC=com", "username", "password"); ``` #### 三、DirectoryEntry对象属性介绍 `DirectoryEntry`对象提供了多种属性,用于获取和设置对象的信息: - **Path**:获取当前目录条目的路径。路径通常为LDAP格式,例如"LDAP://DC=onecity,DC=corp,DC=fabrikam,DC=com"。 ```csharp Console.WriteLine(objDE.Path); ``` - **Name**:获取当前目录条目的名称。 ```csharp Console.WriteLine(objDE.Name); ``` - **Children**:获取当前目录条目下的子项集合。这是一个`DirectoryEntryCollection`类型的对象,可以通过遍历这个集合来访问每个子项。 ```csharp foreach (DirectoryEntry objChildDE in objDE.Children) { Console.WriteLine(objChildDE.Path); } ``` #### 四、DirectoryEntry对象方法介绍 除了属性之外,`DirectoryEntry`还提供了许多有用的方法: - **MoveNext**:移动枚举器到下一个元素。 ```csharp IEnumerator enum0 = objDE.Children.GetEnumerator(); while (enum0.MoveNext()) { DirectoryEntry objChildDE = safe_cast<DirectoryEntry>(enum0.Current); Console.WriteLine(objChildDE.Path); } ``` - **GetEnumerator**:返回一个枚举器,用于遍历`Children`集合。 ```csharp IEnumerator enum0 = objDE.Children.GetEnumerator(); ``` - **Add**:向目录条目下添加一个新的子项。 ```csharp DirectoryEntry child = objDE.Children.Add("CN=TestUser", "user"); ``` - **Remove**:从目录条目下移除一个子项。 ```csharp DirectoryEntry child = objDE.Children.Find("CN=TestUser"); if (child != null) { child.Remove(); } ``` #### 五、DirectoryEntry对象示例代码 以下是一些使用`DirectoryEntry`对象的示例代码: - **Visual Basic 示例**: ```vbnet Public Class PrintChildren Public Shared Sub Main(args() As String) Dim objDE As DirectoryEntry Dim strPath As String = "LDAP://DC=onecity,DC=corp,DC=fabrikam,DC=com" If args.Length > 0 Then strPath = args(1) End If ' Create a new DirectoryEntry with the given path. objDE = New DirectoryEntry(strPath) For Each objChildDE In objDE.Children Console.WriteLine(objChildDE.Path) Next End Sub End Class ``` - **C# 示例**: ```csharp public class PrintChildren { public static void Main(String[] args) { DirectoryEntry objDE; String strPath = "LDAP://DC=onecity,DC=corp,DC=fabrikam,DC=com"; if (args.Length > 0) strPath = args[1]; // Create a new DirectoryEntry with the given path. objDE = new DirectoryEntry(strPath); foreach (DirectoryEntry objChildDE in objDE.Children) Console.WriteLine(objChildDE.Path); } } ``` - **C++ 示例**: ```cpp int main() { String^ args[] = Environment::GetCommandLineArgs(); DirectoryEntry^ objDE; String^ strPath = "LDAP://DC=onecity,DC=corp,DC=fabrikam,DC=com"; if (args->Length > 1) { strPath = args[1]; } // Create a new DirectoryEntry with the given path. objDE = gcnew DirectoryEntry(strPath); System::Collections::IEnumerator^ enum0 = objDE->Children->GetEnumerator(); while (enum0->MoveNext()) { DirectoryEntry^ objChildDE = safe_cast<DirectoryEntry^>(enum0->Current); Console::WriteLine(objChildDE->Path); } } ``` 以上就是关于`DirectoryEntry`对象的相关知识点和示例代码。通过这些知识点的学习,可以帮助开发者更好地理解和应用`DirectoryEntry`对象来进行目录服务的操作。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助