`
zrj_software
  • 浏览: 201951 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用C#对Active Directory(活动目录)的操作

    博客分类:
  • C#
阅读更多

Active Directory(活动目录)是Windows Server 2003域环境中提供目录服务的组件。目录服务在微软平台上从Windows Server 2000开始引入,所以我们可以理解为活动目录是目录服务在微软平台的一种实现方式。当然目录服务在非微软平台上都有相应的实现。关于AD的更详细说明请上百度度娘吧,哈哈~

要在C#.net平台下实现AD相关操作,需要添加引用using System.DirectoryServices;

 

1.AD验证登入,登入窗体如下:




 

 private void Login_Click(object sender, EventArgs e)    //登入按钮
        {
            try
            {
                string FilterStr;//要查找的用户名               
                DirectoryEntry entry = this.MyGetDirectoryEntry();
                DirectorySearcher Seacher = new DirectorySearcher(entry);
                FilterStr = "(&(objectClass=user) (cn=" + m_username + "))";
                Seacher.Filter = FilterStr;
                SearchResult Result = Seacher.FindOne();
                if (Result == null)
                {
                    MessageBox.Show("用戶名或密碼有錯!");
                }
                else
                {
                    MessageBox.Show("登入成功!");
                    entry.AuthenticationType = AuthenticationTypes.Secure;
                    //this.Hide();
                    //Form2 frm = new Form2();
                    //frm.Show();
                }
            }
            catch (Exception ex)
            {
                string Str = ex.Message;
                MessageBox.Show("用戶名或密碼有錯!");
            }
        }

 

private void Check_Click(object sender, EventArgs e)   //测试按钮
    {
            m_username = UserName.Text;
            if (UserExists(m_username))
            {
                MessageBox.Show("連接成功!");
               //  CreateNewUser("", "ezhrt1");
            }
            else
            {
                MessageBox.Show("連接失敗!");
            }
        }

 

public bool UserExists(string UserName)       // 判断用户是否存在
        {
            try
            {
                DirectoryEntry entry = this.MyGetDirectoryEntry();
                DirectorySearcher Search = new DirectorySearcher();
                Search.SearchRoot = entry;
                Search.Filter = "(&(objectClass=user) (cn=" + UserName + "))";
                SearchResultCollection results = Search.FindAll();
                if (results.Count == 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            catch (Exception ex)
            {
                string Str = ex.Message;
                return false;
            }
        }

 2.添加用户


 
 
 

private void button1_Click(object sender, EventArgs e)//测试
        {
            m_cn = Text_CN.Text;
            if (this.UserExists(m_cn))
            {
                LabelCheck.Text = "用户名已存在";
            }
            else
            {
                LabelCheck.Text = "用户名可用";
            }
        }

 

 private void Login_Click(object sender, EventArgs e) //确定
        {
            m_cn = Text_CN.Text;
            m_bs = Text_Bname.Text;
            m_description = Text_Description.Text;
            m_givename = Text_GiveName.Text;
            m_mail = Text_Mail.Text;
            m_pass1 = Text_Pass1.Text;
            m_pass2 = Text_Pass2.Text;
            m_sn = Text_SN.Text;
            m_telephone = Text_Telephone.Text;
            m_www = Text_WWW.Text;
            if (UserExists(m_cn))
            {
                MessageBox.Show("用户名已存在!");
            }
            else if (m_pass1.Equals("") || m_pass2.Equals("") || !m_pass1.Equals(m_pass2))
            {
                MessageBox.Show("密码有误!");
            }
            else if (IsEmail(m_mail))
            {
                MessageBox.Show("邮箱地址格式不正确!");
            }
            else
            {
                try
                {
                    DirectoryEntry myEntry = new DirectoryEntry(m_bs, m_uname, m_pword, AuthenticationTypes.Secure);
                        
                    //"LDAP://192.168.0.169/OU=eZHR,DC=Lanall,DC=com", "域管理用户", "域管理用户密码", AuthenticationTypes.Secure);
                    DirectoryEntries myEntries = myEntry .Children;
                    string Strname = "CN=" + m_cn;
                    DirectoryEntry myDirectoryEntry = myEntries.Add(Strname, "user");
                    myDirectoryEntry.Properties["userPrincipalName"].Value = m_sn + m_givename;
                    myDirectoryEntry.Properties["name"].Value = m_givename;
                    myDirectoryEntry.Properties["samAccountName"].Value = m_cn;
                    myDirectoryEntry.Properties["pwdLastSet"].Value = -1;
                    myDirectoryEntry.Properties["userAccountControl"].Value = 553;//553;// 66048; //590336; 
                    myDirectoryEntry.Properties["sn"].Value = m_sn;
                    myDirectoryEntry.Properties["givenName"].Value = m_givename;
                    myDirectoryEntry.Properties["telephoneNumber"].Value = m_telephone;
                    myDirectoryEntry.Properties["mail"].Value = m_mail;
                    myDirectoryEntry.Properties["wWWHomePage"].Value = m_www;
                    myDirectoryEntry.Properties["description"].Value = m_description;
                    
                    myDirectoryEntry.CommitChanges();
                    myDirectoryEntry.Invoke("SetPassword", new object[] {m_pass1});
                    MessageBox.Show("添加成功!");
                }
                catch (Exception ex)
                {
                    string str = ex.Message;
                }
            }
           
        }

 

 private void Del_Click(object sender, EventArgs e)//删除用户
        {  
            m_cn = Text_CN.Text;
            try
            {
                if (UserExists(m_cn))
                {               
                    DirectoryEntry entry = new DirectoryEntry(m_sname + m_bname, m_uname, m_pword);
                    DirectorySearcher Search = new DirectorySearcher();
                    Search.SearchRoot = entry;
                    Search.Filter = "(&(objectClass=user) (cn=" + m_cn + "))";
                    SearchResult Result = Search.FindOne();
                    DirectoryEntry child = Result.GetDirectoryEntry();
                    child.DeleteTree();
                    MessageBox.Show("删除成功!");
                }
                else
                {
                    MessageBox.Show("不存在用户:" + m_cn);
                }
            }
            catch (Exception ex)
            {
                string Str = ex.Message;
            }
        }

 

  • 大小: 25.2 KB
  • 大小: 32.9 KB
2
2
分享到:
评论

相关推荐

    详解C#使用AD(Active Directory)验证内网用户名密码

    2.使用 DirectoryEntry 类:C# 提供了一个名为 DirectoryEntry 的类,用于对 Active Directory 进行操作。 3.使用 DirectorySearcher 类:C# 提供了一个名为 DirectorySearcher 的类,用于对 Active Directory 中的...

    活动目录Active Directory 管理工具

    这个压缩包文件“AccountManagement”可能包含了一个基于C#语言开发的WinForm应用程序,用于管理和操作活动目录中的用户账户。WinForm是一种常用的Windows桌面应用开发平台,C#是微软开发的一种面向对象的编程语言,...

    How to do almost everything In active directory via C#

    在程序化地访问Microsoft的活动目录(Active Directory, AD)时,许多开发者似乎很难将所有组件整合在一起以达到预期的效果。由于存在多种与LDAP(轻量级目录访问协议)通信的技术,导致很多程序员在代码中混合使用...

    ActiveDirectory.zip

    根据标签"AD ActiveDirectory C# javascript",我们可以推断,这个项目使用C#作为后端语言,利用ASP.NET框架构建Web服务,同时使用JavaScript进行前端交互设计。 C#是一种强大的面向对象的编程语言,特别适合开发...

    通过C#访问Active Directory对象(Visual Studio)

    Active Directory是Microsoft Windows操作系统中的一个核心组件,它负责存储和管理网络资源的信息,如用户、计算机、组和其他安全实体。 首先,要访问Active Directory,我们需要引入System.DirectoryServices命名...

    Active_Directory_Programming

    Active Directory(活动目录)是微软Windows域环境中的一个目录服务组件,它提供了一种集中管理用户、设备、权限和服务的方式。本书《Active Directory编程》由Gil Kirkpatrick撰写,旨在为读者提供Active Directory...

    Howto (Almost) Everything In Active Directory via CSharp.pdf

    ### 如何(几乎)通过C#操作Active Directory中的所有事务 #### 引言 当涉及到通过编程方式访问Microsoft的Active Directory时,许多开发者似乎在整合各个部分以完成所需任务方面遇到了不少困难。由于存在多种与...

    C#AD(活动目录)操作

    C# 操作 Active Directory(AD)是开发企业级应用程序时常用的一种技术,它允许程序员创建、查询、修改和删除AD中的对象。以下是对C#操作AD的详细解释: 1. **系统环境**: - 操作环境:此处是Windows Server 2008...

    C#操作windows域接口详解System.DirectoryServices

    通过本文档的学习,您应该对如何使用C#中的`System.DirectoryServices`命名空间进行Windows域的操作有了较为全面的理解。无论是创建新用户、修改现有用户信息还是查询用户信息,都能够得心应手。当然,在实际应用中...

    Windows_Server_2008_R2_配置Active_Directory域控制器域控制器

    根据给定的文件信息,以下是对配置Windows Server 2008 R2中的Active Directory(AD)域控制器的详细解析: ### 配置环境 在开始配置Active Directory域控制器之前,确保您的环境满足以下条件: - **操作系统版本...

    c#对域用户的操作

    在提供的代码片段中,`ADHelper` 类封装了与活动目录相关的操作,使得对AD域用户的管理变得更加方便。下面我们将详细探讨这个类中的关键知识点。 1. **ADHelper 类结构**: `ADHelper` 是一个静态密封类,这意味着...

    如何将窗体身份验证用于 Active Directory

    在本文中,我们将探讨如何创建一个使用窗体身份验证(Forms Authentication)来验证用户是否属于Active Directory的Web应用程序。这涉及到多个步骤和技术点,包括如何从Active Directory获取经过身份验证的用户的组...

    .net c#域操作工具类

    域操作类是.NET开发人员处理活动目录(Active Directory)时经常会用到的一种工具,它提供了对域用户、组、计算机等对象的管理功能。本文将详细介绍".net c#域操作工具类"的相关知识点。 首先,了解什么是域。在...

    Windows Server 2008 R2 配置 AD(Active Directory)域控制器

    Windows Server 2008 R2 配置 AD(Active Directory)域控制器 配置环境 1配置 DNS 服务器 2.配置 Active Directory 域服务 3.C# AD(Active Directory)域同步 组织单位、用户基本信息

    活动目录 、OpenLDAP... 操作示例代码

    1. **活动目录(Active Directory)**:活动目录是Microsoft Windows Server操作系统的核心组件,它是一个集中式目录服务。它存储网络对象(如用户、计算机、打印机等)的信息,并为网络用户提供身份验证和授权服务。...

    C#操作IIS代码

    在进行系统开发时,特别是涉及到Web应用的部署与管理时,我们常常需要利用.NET框架中的C#语言对Internet Information Services (IIS)进行一系列的操作,例如创建或删除虚拟目录、修改虚拟目录属性等。这些操作能够...

    C#基类整理

    2. **C#读取AD域里用户名或组**:Active Directory(AD)是Windows操作系统中的目录服务,用于存储和管理网络资源。在C#中,可以使用System.DirectoryServices命名空间的类来与AD交互,如DirectoryEntry和...

    C#操作Word文件

    本文将详细介绍如何使用C#进行Word文件的基本操作,包括创建Word文档、添加文本、设置格式、插入表格等。 #### 二、环境搭建与命名空间引入 在开始之前,我们需要确保项目环境中已经安装了Microsoft Office,并且...

    PassCore:Active Directory的自助服务密码管理工具

    这一工具由Unosquare开发,采用C#语言编写,并利用ASP.NET Core框架与Material UI(React组件)精心打造用户界面。PassCore的一个显著优势是其跨平台兼容性:它不仅能够在Windows和Linux服务器上运行,而且还支持...

Global site tag (gtag.js) - Google Analytics