C#在活动目录(ACTIVE DIRECTORY)中创建组织单位和用户
来源:互联网 发布:玻璃软件 编辑:程序博客网 时间:2024/06/05 11:15
在对AD进行操作,我们首先要引如System.DirectoryServices这个命名空间,里面的DirectoryEntry类是我们主要用到的。他封装了 Active Directory 层次结构中的节点或对象,我们先要建立一个DirectoryEntry对象。
其中path是 DirectoryEntry的路径,username是在对客户端进行身份验证时使用的用户名,password是在对客户端进行身份验证时使用的密码,AuthenticationTypes是我们请求安全身份认证的方式。path说明一下,就是你所在的域的域名,如cnblogs.com。这样我们可以通过域名得到一个DirectoryEntry 对象。
接下来我们需要做的工作是建立组织单位,用到Children属性,使用此属性在层次结构中查找、检索或创建目录项。此属性是一个集合,它与通常的迭代功能一起,提供Add方法,通过该方法将节点直接添加到当前绑定到的父节点之下的集合。当向集合中添加节点时,必须指定新节点的名称以及要与该节点相关联的架构模板的名称。例如,您可能需要使用标题为“Computer”的架构在层次结构中添加新的计算机。Add.这个方法很简单,只需要注意一下参数,name是我们建立的组织单位的名称前面的OU=是必须的,后一个参数Add 方法,通过该方法将节点直接添加到当前绑定到的父节点之下的集合。当向集合中添加节点时,必须指定新节点的名称以及要与该节点相关联的架构模板的名称。例如,您可能需要使用标题为“Computer”的架构在层次结构中添加新的计算机。Add.这个方法很简单,只需要注意一下参数,name是我们建立的组织单位的名称前面的OU=是必须的,后一个参数Add 方法,通过该方法将节点直接添加到当前绑定到的父节点之下的集合。当向集合中添加节点时,必须指定新节点的名称以及要与该节点相关联的架构模板的名称。例如,您可能需要使用标题为“Computer”的架构在层次结构中添加新的计算机。Add.这个方法很简单,只需要注意一下参数,name是我们建立的组织单位的名称前面的OU=是必须的,后一个参数organizationalUnit也是固定了,代表了要增加的DirectoryEntry的架构名称,organizationalUnit表示是增加的是组织单位。最后需要用CommitChanges方法提交一下。代码如下:
1public
通过上面的方法我们已经建立了组织单位,下面是向组织单位里添加用户了,方法其实和添加组织单位一样,只是参数表示的类型不同而已。我们可以直接将用户这个DirectoryEntry加在刚才的组织单位对象下username表示名称,sAMAccountName设置的是用户的登陆名称。
通过上面的方法我们建立了组织单位和组织单位下的用户,但是这样还没有完。当我建好用户后发现用户并没有启用,所以我们还要想办法让建好的用户处于启用状态。查了相关资料和userAccountControl这个属性有关系。我在程序里设置断点跟踪了一下得到起用的值,重新获得用户DirectoryEntry对象后对其进行更改,用户被启用。我想因该还有其他方法,这是目前我能想到的。如果有更好的方法欢迎留言给我。代码如下。
1public DirectoryEntry GetDirectoryObject( string path, string username, string password)
2 {
3 DirectoryEntry de =new DirectoryEntry( "LDAP://"+path, username, password, AuthenticationTypes.Secure);
4 return de;
5 }
3
其中path是 DirectoryEntry的路径,username是在对客户端进行身份验证时使用的用户名,password是在对客户端进行身份验证时使用的密码,AuthenticationTypes是我们请求安全身份认证的方式。path说明一下,就是你所在的域的域名,如cnblogs.com。这样我们可以通过域名得到一个DirectoryEntry 对象。
接下来我们需要做的工作是建立组织单位,用到Children属性,使用此属性在层次结构中查找、检索或创建目录项。此属性是一个集合,它与通常的迭代功能一起,提供Add方法,通过该方法将节点直接添加到当前绑定到的父节点之下的集合。当向集合中添加节点时,必须指定新节点的名称以及要与该节点相关联的架构模板的名称。例如,您可能需要使用标题为“Computer”的架构在层次结构中添加新的计算机。Add.这个方法很简单,只需要注意一下参数,name是我们建立的组织单位的名称前面的OU=是必须的,后一个参数Add 方法,通过该方法将节点直接添加到当前绑定到的父节点之下的集合。当向集合中添加节点时,必须指定新节点的名称以及要与该节点相关联的架构模板的名称。例如,您可能需要使用标题为“Computer”的架构在层次结构中添加新的计算机。Add.这个方法很简单,只需要注意一下参数,name是我们建立的组织单位的名称前面的OU=是必须的,后一个参数Add 方法,通过该方法将节点直接添加到当前绑定到的父节点之下的集合。当向集合中添加节点时,必须指定新节点的名称以及要与该节点相关联的架构模板的名称。例如,您可能需要使用标题为“Computer”的架构在层次结构中添加新的计算机。Add.这个方法很简单,只需要注意一下参数,name是我们建立的组织单位的名称前面的OU=是必须的,后一个参数organizationalUnit也是固定了,代表了要增加的DirectoryEntry的架构名称,organizationalUnit表示是增加的是组织单位。最后需要用CommitChanges方法提交一下。代码如下:
1public DirectoryEntry GreateOU( string ouname)
2 {
3 DirectoryEntry entry = GetDirectoryObject(path,username,password);
4 DirectoryEntry OU = entry.Children.Add( "OU="+ouname, "organizationalUnit");
5 OU.CommitChanges();
6 return OU;
7
8 }
1DirectoryEntry ude =ou.Children.Add("CN="+username,"user");
2 ude.Properties[ "sAMAccountName"].Value=name;
3 ude.CommitChanges();
4 ude.Close();
2
3
通过上面的方法我们建立了组织单位和组织单位下的用户,但是这样还没有完。当我建好用户后发现用户并没有启用,所以我们还要想办法让建好的用户处于启用状态。查了相关资料和userAccountControl这个属性有关系。我在程序里设置断点跟踪了一下得到起用的值,重新获得用户DirectoryEntry对象后对其进行更改,用户被启用。我想因该还有其他方法,这是目前我能想到的。如果有更好的方法欢迎留言给我。代码如下。
1public void SetEnable( string user)
2 {
3 DirectoryEntry ude =GetDirectoryEntry(user);
4 ude.Properties[ "userAccountControl"].Value=544;
5 ude.CommitChanges();
6 ude.Close();
7
8 }
3
4
5
8
如果需要禁用该用户只需要将这个值设置为546就行了。
最后需要做的是对改用户设置密码,这一步必要好做,同样找到改用户DirectoryEntry对象对其进行设置
1public void ChangePassword( string name, string password)
2 {
3 DirectoryEntry ude =GetDirectoryEntry(name);
4 ude.Invoke( "SetPassword",new object[]{password});
5 ude.CommitChanges();
6 ude.Close();
7 }
通过上面方法基本建立了组织单位和用户,但是我发现其中设置密码必须将程序放在主域服务器上才能生效,不然就说找不到对象3
4
5
- C#在活动目录(ACTIVE DIRECTORY)中创建组织单位和用户
- 关于在活动目录(ACTIVE DIRECTORY)中创建组织单位和用户
- 在Windows XP 中使用Active Directory(活动目录)
- C# AD(Active Directory)域信息同步,组织单位、用户等信息查询
- C# AD(Active Directory)域信息同步,组织单位、用户等信息查询
- C# AD(Active Directory)域信息同步,组织单位、用户等信息查询
- 活动目录 Active Directory
- AD (Active Directory)活动目录
- 活动目录(Active Directory) 介绍
- 活动目录(Active Directory)
- Active Directory如何用C#进行增加、删除、修改、查询用户与组织单位!
- Active Directory如何用C#进行增加、删除、修改、查询用户与组织单位!
- Active Directory如何用C#进行增加、删除、修改、查询用户与组织单位!
- AD(Active Directory)域信息同步,组织单位、用户等信息查询
- 活动目录(Active Directory)小结
- 活动目录(Active Directory)基础
- Java访问windows活动目录+Active+Directory
- 活动目录(Active Directory)小结 【转载】
- 完美数
- 我们都爱周鸿祎.......
- 明志致远
- unix设计哲学
- C++ 库研究笔记——Linux下创建文件夹
- C#在活动目录(ACTIVE DIRECTORY)中创建组织单位和用户
- UIKit封装的系统动画
- apt-get update报错:Hash sum mismatch
- 嵌入式平台编译安装minicom
- 程序员的困境
- Ubuntu 持续更新 有用的小命令
- openlayers简单例子
- NET 分布式架构开发实战之二 草稿设计
- 解决hibernate:referenced file contains errors http hibernate.sourceforge.net hibernate-mapping-3.0.dtd