以前写了点关于活动目录的文章,收到很多的反馈和问题。由于时间限制,无法一一回应。近期在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



}
}
留言反馈
In .NET 2.0, the standard way to access Active Directory is using the classes in System.DirectoryServices.ActiveDirectory namespace.