.NET Core中如何使用DirectoryEntry类进行AD操作?

作者:衡阳麻将开发公司 阅读:34 次 发布时间:2023-05-13 11:04:02

摘要:在 .NET 中,我们可以使用 DirectoryEntry 类进行 Active Directory(AD)操作。DirectoryEntry 类提供了一种操作 AD 的方式,在这种操作方式中我们可以添加、更新、删除和检索 AD 中的对象。本文将介绍如何在 .NET Core 中使用 DirectoryEntry 类进行 AD 操作。一、Director...

在 .NET 中,我们可以使用 DirectoryEntry 类进行 Active Directory(AD)操作。DirectoryEntry 类提供了一种操作 AD 的方式,在这种操作方式中我们可以添加、更新、删除和检索 AD 中的对象。本文将介绍如何在 .NET Core 中使用 DirectoryEntry 类进行 AD 操作。

.NET Core中如何使用DirectoryEntry类进行AD操作?

一、DirectoryEntry 类

DirectoryEntry 类提供了一种操作 AD 的方式。AD 是一种目录服务,它可用于跨网络验证用户、授权访问和分配权限。DirectoryEntry 类提供了一种静态的方式以便于使用 AD 中的所有属性。该类还提供了一些属性和方法,用于管理特定的目录项。

如果你已经熟悉了 DirectoryEntry 类,那么你可以跳过此章节。否则了解一下DirectoryEntry。

DirectoryEntry 类提供了一种访问和实现 AD 的方式。它是操作 AD 中的所有目录条目的基础。DirectoryEntry 类的构造函数有很多重载。在本文中,让我们看一下最常用的两个构造函数:

```C#

DirectoryEntry(string path)

DirectoryEntry(string path, string username, string password)

```

第一个构造函数使用指定的路径和默认域帐户(或匿名)来初始化 DirectoryEntry 实例;而第二个构造函数使用指定的路径和用户名和密码来初始化此实例。

使用 DirectoryEntry,我们可以打开 AD 中的目录条目,修改或添加属性或值,并关闭它。

二、实现AD操作

在 .NET Core 中,我们可以使用 DirectoryEntry 类来添加、修改、删除和检索 AD 中的对象。我们将使用 DirectoryEntry 类的以下方法:

1.新增:

```C#

public void Add(string name, string schemaClassName)

```

2.修改:

```C#

void CommitChanges ();

void RefreshCache ();

void MoveTo (DirectoryEntry newParent);

void Rename(string newName);

```

3.删除:

```C#

void DeleteTree ();

```

4.检索:

```C#

public SearchResultCollection FindAll();

public SearchResult FindOne();

```

五、示例代码

简单介绍了DirectoryEntry,现在,我们将介绍使用DirectoryEntry类进行AD操作的示例。在此示例中,我们将介绍如何连接到 AD,并使用 DirectoryEntry 实例添加和检索 AD 中的用户信息。首先,我们需要使用 DirectoryEntry 构建器来创建一个 DirectoryEntry 实例。

```C#

using System.DirectoryServices;

public class AD {

private string domain;

private string username;

private string password;

private DirectoryEntry _directoryEntry;

public DirectoryEntry directoryEntry

{

get { return _directoryEntry; }

set { _directoryEntry = value; }

}

public AD(string domain)

{

_directoryEntry = new DirectoryEntry(domain);

}

public AD(string domain, string user, string password)

{

_directoryEntry = new DirectoryEntry(domain,

user,

password);

}

}

```

在上面的代码中,我们创建了一个名为 AD 的类,它与特定的 AD 域相关联。我们还在构造函数中创建了一个 DirectoryEntry 实例,该实例与指定的 AD 域相关联。在我们的 AD 类中,我们还定义了一个名为 directoryEntry 的属性,它提供访问 DirectoryEntry 实例的方式。

现在我们已经有了一个 AD 对象并已连接到 AD,接下来我们添加和检索 AD 中的实体。

1. 添加用户:

```C#

public void addUser(string name, string firstName, string lastName)

{

if (_directoryEntry != null)

{

try

{

DirectoryEntry newUser = directoryEntry.Children.Add("CN=" + name, "user");

newUser.Properties["samAccountName"].Value = name;

newUser.Properties["givenName"].Value = firstName;

newUser.Properties["sn"].Value = lastName;

newUser.Properties["description"].Value = "Sample user";

newUser.CommitChanges();

}

catch (Exception e)

{

Console.WriteLine("Error: " + e.Message);

}

}

}

```

在上面的代码中,我们定义了一个名为 addUser 的函数,该函数把用户信息添加到 AD 中。首先,我们创建一个名为 newUser 的 DirectoryEntry 实例,然后通过使用 Add 函数将其添加到 AD 中。

然后,我们更新了 samAccountName、givenName、sn 和 description 属性。最后,我们发送了 CommitChanges()函数,以确保 DirectoryEntry 实例的更改被提交到 AD 中。

2. 检索用户:

```C#

public SearchResult getUser(string name)

{

if (_directoryEntry != null)

{

try

{

DirectorySearcher search = new DirectorySearcher(_directoryEntry);

search.Filter = "(&(objectClass=user)(samaccountname=" + name + "))";

search.PropertiesToLoad.Add("givenName");

search.PropertiesToLoad.Add("sn");

search.PropertiesToLoad.Add("description");

SearchResult result = search.FindOne();

return result;

}

catch (Exception e)

{

Console.WriteLine("Error: " + e.Message);

return null;

}

}

else

{

return null;

}

}

```

在上面的代码中,我们定义了一个名为 getUser 的函数,该函数从 AD 中检索用户信息。我们首先使用 DirectorySearcher 实例来获取 AD 中的所有用户信息。然后我们使用 Filter 属性过滤出需要的信息。

例如,我们在过滤器中使用(&(objectClass=user)(samaccountname=xuehua))来检索 samaccountname 为 xuehua 的用户。

在示例中,我们还指定了需要加载和显示的附加属性。搜索完成后,我们返回一个 SearchResult 对象。

我们已经通过DirectoryEntry操作AD。可以根据具体场景进行扩展。如果你仍然对DirectoryEntry有疑问,可以查看MSDN文档。

  • 原标题:.NET Core中如何使用DirectoryEntry类进行AD操作?

  • 本文链接:https:////zxzx/7554.html

  • 本文由深圳飞扬众网小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与飞扬众网联系删除。
  • 微信二维码

    CTAPP999

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员


    点击这里给我发消息电话客服专员


    在线咨询

    免费通话


    24h咨询☎️:166-2096-5058


    🔺🔺 棋牌游戏开发24H咨询电话 🔺🔺

    免费通话
    返回顶部