如何使用.Net DirectoryServices将新用户添加到系统的域中?

时间:2011-09-06 07:15:07

标签: .net active-directory ldap directoryservices

我想编写一个Console应用程序,它只使用.Net DirectoryServices API和LDAP将新用户添加到我自己的机器的域中。

我是否需要DomainController的管理员帐户密码才能执行此操作?

我是否只需要在该域上的计算机上运行该控制台应用程序,或者也可以在其他域上运行?

有人能为我提供一个例子吗?

更新:获取用户代码数

DirectoryEntry myLdapConnection = createDirectoryEntry();
DirectorySearcher search = new DirectorySearcher(myLdapConnection);
search.Filter = "(&objectClass=User)objectCategory=Person)userPrincipalName=*health2.com))";
search.PropertiesToLoad.Add("sAMAccountName");
SearchResultCollection allUsers = search.FindAll();
for (int usersCount = 0; usersCount < allUsers.Count; usersCount++)
{
    SearchResult result = allUsers[usersCount];
    if (result.Properties["sAMAccountName"].Count > 0)
    {
       string cn = result.Properties["sAMAccountName"][0].ToString();
       Console.WriteLine(cn);
       Console.ReadLine();
    }
}
Console.WriteLine(string.Format(@"Users Count - {0}", allUsers.Count.ToString()));
Console.ReadLine();

1 个答案:

答案 0 :(得分:2)

如果您使用的是.NET 3.5及更高版本,则应查看System.DirectoryServices.AccountManagement(S.DS.AM)命名空间。在这里阅读所有相关内容:

基本上,您可以定义域上下文并轻松在AD中查找用户和/或组:

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");

if(user != null)
{
   // do something here....     
}

我提供的文章链接也显示了您可以轻松创建新用户并将其添加到AD:

// create a user principal object
UserPrincipal user = new UserPrincipal(ctx, "User1Acct", "pass@1w0rd01", true);

// assign some properties to the user principal
user.GivenName = "User";
user.Surname = "One";
user.UserPrincipalName = "user.one@health2.com";

// force the user to change password at next logon
user.ExpirePasswordNow();

// save the user to the directory
user.Save();

新的S.DS.AM让您可以轻松地与AD中的用户和群组一起玩!