























最近几天因为工作需要,研究了一下活动目录。用户主要的需求是要把现有系统的用户和组织结构导入到目前的AD中,当然用户肯定是不愿意去手动做这件事情的,所以就让我给做一个程序来完成这个事情。再此以前从来没弄过和AD相关的东西,连安装AD都是现学现卖
。既然客户有需求就硬着头皮上了,研究了一下基本的东西,拿来分享一下,希望能对要对AD进行操作的朋友有帮助。
在对AD进行操作,我们首先要引如System.DirectoryServices这个命名空间,里面的DirectoryEntry类是我们主要用到的。他封装了 Active Directory 层次结构中的节点或对象,我们先要建立一个DirectoryEntry对象。
1
public DirectoryEntry GetDirectoryObject(string path,string username,string password)
2
{
3
DirectoryEntry de=new DirectoryEntry("LDAP://"+path, username, password, AuthenticationTypes.Secure);
4
return de;
5
}
其中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方法提交一下。代码如下:
1
public 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
}
1
DirectoryEntry ude=ou.Children.Add("CN="+username,"user");
2
ude.Properties["sAMAccountName"].Value=name;
3
ude.CommitChanges();
4
ude.Close();
1
public void SetEnable(string user)
2
{
3
DirectoryEntry ude=GetDirectoryEntry(user);
4
ude.Properties["userAccountControl"].Value=544;
5
ude.CommitChanges();
6
ude.Close();
7
8
}
如果需要禁用该用户只需要将这个值设置为546就行了。
最后需要做的是对改用户设置密码,这一步必要好做,同样找到改用户DirectoryEntry对象对其进行设置
1
public 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
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。