日期:2015-03-14  浏览次数:2723 次

1

首先添加引用System.DirectoryServices的.net组件

using System.DirectoryServices;

2

 

[c-sharp] view plaincopy
 
  1. private void adduser(string addaccount)  
  2.   
  3. {  
  4.   
  5. DirectoryEntry decu=new DirectoryEntry("LDAP//","用户名","密码")  
  6.   
  7. DirectoryEntries users=decu.Children;  
  8.     DirectoryEntry user=users.Add("CN="+addaccount,"user");  
  9.   
  10.     user.Properties["userPrincipalName"].Add(account);  
  11.     user.Properties["samAccountName"].Add(addaccount);    //添加用户的帐号名称  
  12.     user.Properties["pwdLastSet"].Value=0;           //设置上一次登陆密码为空,用户在新登陆后需要重新设置密码  
  13.     user.Properties["userAccountControl"].Value=544;   //有效用户   ,应该设为512,却出错  
  14.     user.CommitChanges();                                                 //确认改变,写入AD  
  15.   
  16. }  

 

这里的话可以把用户添加到了USER组里了


3

其他属性

user.Properties["c"].Value="cn";

user.Properties["co"].Value="China";

user.Properties["telephonenumber"].add("123456789");

属性的添加有两类

一类可以直接输入VALUE的数值

另一类由于有多项值,所以需要用ADD( )方法来解决

但需要判断是否有空值

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

{

user.Properties["mobile"][0]="13333333333";

}

else

{

user.Properties["mobile"].Add("13333333333");

}

user.CommitChanges();

4

关于member的管理

用户的memberof属性是用户在AD中比较重要的部分

在发现我们没有办法直接修改

user.Properties["memberOf"].add("cn=....");                         X

但我们可以直接修改需要添加到的组的属性

然后修改

group.Properties["member"].add("cn=....");  

就可以达到修改组成员的效果来实现添加为某组的成员,但需要有比修改user比较大的修改组的权限

5

CommitChanges()

保存修改操作,勿忘.

6

关于Exchange2000也可以使用以上的方法创建exchange2000的用户

不过存在创建的Exchange用户与AD帐号的连接问题

EXCHANGE2003下却由于与AD结合,方便不少


问题:

user.Properties["telephonenumber"]属于多值属性

经测试只有1000个的容量

如果我有些特定的属性已经超出1000个

user.Properties["telephonenumber"].[999]