MS.Tech - IT人

.NET & 微软企业服务器 & 前沿技术和产品
随笔 - 107, 评论 - 1269, 引用 - 87

导航

关于

所有内容和观点仅代表个人观点,如有问题和建议请发Email给我。

标签

每月存档

最新留言

广告

 

以前写了点关于活动目录的文章,收到很多的反馈和问题。由于时间限制,无法一一回应。近期在codeproject上找到了一篇关于活动目录API封装的文章,一时心动,就在其基础上进行了修改扩展(代码使用上除按原作者的要求外,其他可没任何要求)。经过修改扩展后的活动目录操作类,应该可以满足大部分需求了,相信大家使用起来也会比较简便的。下载地址:http://www.gotdotnet.com/Workspaces/Workspace.aspx?id=93001c9d-194c-47ff-bc1a-e5ccd81d7e4a

Sample Code:

private void button1_Click(object sender, EventArgs e) { // 获取 OU ADOrganizationalUnit ou = ADManager.LoadOU("TestOU"); Console.WriteLine(ou.DistinguishedName); // 获取该 OU 下所有用户(包括所有下级OU) IList<ADUser> allUsers = ADManager.LoadAllUsers(ou.DistinguishedName, true); Console.WriteLine(allUsers.Count.ToString()); // 获取该 OU 下所有用户(不包括所有下级OU, 仅该OU里) IList<ADUser> subUsers = ADManager.LoadAllUsers(ou.DistinguishedName, false); Console.WriteLine(subUsers.Count.ToString()); // 在 OU 下创建用户。并且激活该用户和设置用户帐号密码永不过期。 ADUser user = ADManager.CreateUser(ou.DistinguishedName, "通用名", "MyAccount", "MyPassword@1", AccountOptions.ADS_UF_NORMAL_ACCOUNT | AccountOptions.ADS_UF_DONT_EXPIRE_PASSWD); // 在 OU 下创建组,该组默认为全局安全组。 ADGroup group = ADManager.CreateGroup(ou.DistinguishedName, "MyGroup"); // 把用户加入指定组里 ADManager.AddUserToGroup(user.AccountName, group.Name); // 把用户从指定组里移除 ADManager.RemoveUserFromGroup(user.AccountName, group.Name); // 禁用用户 ADManager.SetUserAccountOptions(user.AccountName, AccountOptions.ADS_UF_ACCOUNTDISABLE); // 启用用户并设置用户密码永不过期 ADManager.SetUserAccountOptions(user.AccountName, AccountOptions.ADS_UF_NORMAL_ACCOUNT | AccountOptions.ADS_UF_DONT_EXPIRE_PASSWD); // 获取用户所属的所有用户组 IList<ADGroup> userGroups = user.Groups; foreach (ADGroup userGroup in userGroups) { Console.WriteLine(userGroup.Name); } // 获取组里所有用户 IList<ADUser> groupUsers = group.Users; foreach (ADUser groupUser in groupUsers) { Console.WriteLine(groupUser.AccountName); } // 更新用户信息 user.Company = "User Company"; user.Department = "Sales"; user.Email = "myaccount@demo.local"; user.Mobile = "13333333333"; user.Url = "http://homepage"; user.ExtensionAttribute1 = "my custom info"; user.Title = "CAO"; // ...... user.Update(); // 删除用户和组和OU ADManager.DeleteUser(user.AccountName); ADManager.DeleteGroup(group.Name); }

打印 | 张贴于 2006-09-11 00:27:00 | Tag:个人评论和作品  微软企业服务器  Active Directory

留言反馈

#回复: 活动目录操作类更新 编辑
我是一个才接触AD的菜鸟,现在老师要我们自己弄一个活动目录,我觉得很难啊,虽说我们已经学习了VB和JAVA,但是对于这种单独的程序编写,我老是想不出方法来,希望老鸟们能给我一点提示。谢过谢过。
2007-09-14 09:19:00 | [匿名:Judy]
#AD 用户组类库中增加几个功能 编辑
以前弄个了用于AD OU、帐号和组等对象的几个类(见《 活动目录操作类更新 》),现在对这个再进行一点改进和增加一些功能。貌似gotdotnet workspace已经无法使用,过些日子我把更新后的类库发布在codeplex上再发布个具体链接出来
2007-07-22 04:03:00 | [匿名:Joycode@Ab110.com]
#回复: 活动目录操作类更新 编辑
楼主的代码比System.DirectoryServices.ActiveDirectory要好懂.
2007-06-04 15:26:00 | [匿名:john]
#re: 活动目录操作类更新 编辑
en
2006-10-08 23:52:00 | [匿名:影视制作,宣传片制作,影视广告制作]
#re: 活动目录操作类更新 编辑
hi, sunmast. I know。但是考虑到有部分应用需要程序性的实现部分用户管理操作,所以才有这么一种实现方式。很高兴近些年来AD逐渐被中国用户接受,在和微软企业服务器相关产品开发过程中也出现了很多对AD里对象操作的需求,有需求也就有相应的实现。所以我也希望能提供一个比较好的实现给大家。当然,AD主要还在于管理,在于规划,这点我以前提过了。:)
2006-09-12 20:50:00 | [匿名:liuhuimiao]
#re: 活动目录操作类更新 编辑
Hay, Active Directory is not used to store user/computer data only. It is a LDAP realization.
In .NET 2.0, the standard way to access Active Directory is using the classes in System.DirectoryServices.ActiveDirectory namespace.
2006-09-12 17:50:00 | [匿名:sunmast]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode.MVC引擎 0.5.2.0