`
wyf
  • 浏览: 433575 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

C#获取AD用户信息

阅读更多
      假设AD中有一组织单位,给定以下信息:

      AD:ms.com

      AD管理员:administrator

      AD管理员密码:pass@word1      

      组织单位名称:XX有限公司(不必理会其下有嵌套多少组织单位,通常都是部门)

      现在要获取这一组织单位下的所有的用户信息,比如只要:帐号,姓名,邮件,所在组织这四个字段,具体实现如示例代码所示:      

        private const string domainName = "ms.com";

        private const string adAdmin = "administrator";

        private const string password = "pass@word1";

        private const string ouName = "XX有限公司";

        private DataTable GetADUsers()

        {

           DataTable dt = new DataTable();

           dt.Columns.Add("sAMAccountName");//帐号

            dt.Columns.Add("Name");//姓名

            dt.Columns.Add("mail"); //邮箱地址

            dt.Columns.Add("OU");  //用户组织

            DirectoryEntry adRoot = new DirectoryEntry("LDAP://" + domainName, adAdmin, password, AuthenticationTypes.Secure);

           DirectoryEntry ou = adRoot.Children.Find("OU=" + ouName);

           DirectorySearcher mySearcher = new DirectorySearcher(ou);

           mySearcher.Filter = ("(objectClass=user)"); //user表示用户,group表示组

            foreach (System.DirectoryServices.SearchResult resEnt in mySearcher.FindAll())

            {

                DataRow dr = dt.NewRow();

                dr["sAMAccountName"] = string.Empty;

                dr["Name"] = string.Empty;

                dr["mail"] = string.Empty;

                dr["OU"] = string.Empty;

                DirectoryEntry user = resEnt.GetDirectoryEntry();

                if (user.Properties.Contains("sAMAccountName"))

                {

                    dr["sAMAccountName"] = user.Properties["sAMAccountName"][0].ToString();

                }

                if (user.Properties.Contains("Name"))

                {

                    dr["Name"] = user.Properties["Name"][0].ToString();

                }

                if (user.Properties.Contains("mail"))

                {

                    dr["mail"] = user.Properties["mail"][0].ToString();

                }

                if (user.Parent.Name != string.Empty && user.Parent.Name.IndexOf('=') > -1)

                {

                    //获取用户所在的组织单位

                       dr["OU"] = user.Parent.Name.Split('=')[1];

                }

                dt.Rows.Add(dr);

            }

            return dt;

        }

    }

      如果想要知道用户信息中都包含哪些字段,可以foreach出来看看

      DirectoryEntry user = resEnt.GetDirectoryEntry();

      foreach (string property in user.Properties.PropertyNames)

      {

          Console.WriteLine("字段名: " + property);

      }

 

分享到:
评论

相关推荐

    c# 获取域 用户 组 信息

    C#作为.NET框架的主要编程语言,提供了丰富的类库来与Active Directory(AD)进行交互,从而获取和操作域用户、用户组以及组织单元(OU)等信息。本篇文章将详细探讨如何使用C#来实现这一目标。 首先,我们需要引入...

    C#读取AD域的组织结构和用户

    本文将深入探讨如何使用C#编程语言来读取AD域中的组织结构和用户信息。C#提供了丰富的类库,如System.DirectoryServices命名空间,使得与AD进行交互变得相对简单。 首先,我们需要理解AD的组织结构。AD域是基于树形...

    C# 、.NET 读取AD域里用户名或组

    本篇文章将详细介绍如何使用C#和.NET框架进行AD域操作,包括读取用户和组信息、创建与删除用户和组,以及移动用户到组等功能。 首先,进行AD域操作前,需要引用System.DirectoryServices命名空间,通过...

    验证AD域账号登陆,获取AD域用户列表,获取用户邮箱

    验证AD域账号登陆,获取AD域用户列表,获取用户邮箱,修改密码等AD域操作

    C#读取AD域里用户名或组

    // 输出找到的用户信息 Console.WriteLine($"User found: {result.Path}"); Console.WriteLine("Properties:"); foreach (var prop in result.Properties) { Console.WriteLine($"{prop.PropertyName}: {...

    获取 AD域 用户列表

    - **LDAP查询**:通过编程语言(如C#、VB.NET、Python等)使用LDAP协议与AD交互,获取用户信息。例如,使用Python的ldap3库,编写查询脚本获取用户列表。 - **.NET Framework**:使用System.DirectoryServices命名...

    C# 获取域、组信息

    除了获取用户信息,我们还可以获取组信息。以下是如何查找特定组并打印其成员: ```csharp string groupName = "GroupName"; DirectorySearcher groupSearcher = new DirectorySearcher(); groupSearcher.Filter = ...

    获取AD帐号用户邮箱源码

    一般来说,获取AD用户邮箱的源码会包含以下步骤: - 连接AD:创建`DirectoryEntry`对象,指定AD服务器的DNS名称或IP地址,以及AD林或域的路径。 - 构建查询:创建`DirectorySearcher`对象,设置`Filter`属性来...

    c#AD域信息读取工具源码

    在IT领域,特别是Windows网络管理中,Active Directory(AD)是一个关键组件,用于集中存储和管理组织的用户、计算机和其他对象的信息。C#是.NET框架下广泛使用的编程语言,非常适合开发与AD交互的应用程序。本篇...

    C# 读取当前账户,然后查出AD中其他的相关信息,并写到注册表里面

    现在,我们有了查询结果,可以从中获取AD中的其他信息,例如用户的全名、电子邮件地址等: ```csharp if (result != null) { DirectoryEntry userEntry = result.GetDirectoryEntry(); string fullName = ...

    C#同步AD的数据的代码

    标题中的"C#同步AD的数据的代码"表明我们将讨论的是一个使用C#编程语言实现的程序,该程序能够从AD获取信息并进行同步。这通常涉及到读取AD对象、比较本地数据库或应用内的数据,并根据需要进行更新。 描述中提到,...

    C#读取AD域里用户名或组.rar

    Active Directory使用LDAP(Lightweight Directory Access Protocol)协议进行通信,C#中的System.DirectoryServices命名空间提供了访问AD的类库。主要涉及的类有DirectoryEntry、DirectorySearcher和 SearchResult...

    C#读取AD欲里的用户名或组实例

    你可以从中获取AD对象的信息,如用户名、全名等。例如,获取用户的全名: ```csharp if (result != null) { DirectoryEntry userEntry = result.GetDirectoryEntry(); string fullName = userEntry.Properties...

    C#操作AD的几个例子,研究研究会有收获。

    首先,要理解C#中的System.DirectoryServices命名空间,这是操作AD的基础。这个命名空间包含了DirectoryEntry、DirectorySearcher、DirectoryServices等类,它们提供了与AD交互的接口。DirectoryEntry对象代表AD中的...

    新版AD操作类C#代码

    关于ASP.NET如何获取AD中的详细用户信息等方法的实现。其中主要依托CLR:DirectoryServices. ** File Name: AdHandler.cs ** Creator: ** Create date: ** Lastest Modifier: ** Lastest Modify date: ** ...

    获取AD中的Tokengroups

    在C#中,你可以通过P/Invoke(Platform Invoke)来调用Windows API函数。`EnumTokenGroups`是`advapi32.dll`库中的函数,其原型如下: ```csharp [StructLayout(LayoutKind.Sequential)] public struct SID_AND_...

    c#对域用户的操作

    在C#编程中,操作AD(Active Directory)域用户是一项常见的任务,这通常涉及到验证用户身份、查询用户信息、管理用户权限等。在提供的代码片段中,`ADHelper` 类封装了与活动目录相关的操作,使得对AD域用户的管理...

    C#创建windows用户并分配其权限

    在C#中,可以利用`System.DirectoryServices`命名空间中的类来实现对Windows用户的创建。具体实现步骤如下: 1. **获取当前计算机的目录条目**:首先需要获取当前计算机的目录条目,这里使用`DirectoryEntry`类。 ...

Global site tag (gtag.js) - Google Analytics