将新用户添加到Active Directory

时间:2015-09-01 06:32:37

标签: c# active-directory

我搜索了很长时间一个完整的答案,了解如何使用C#在Active Directory中创建用户,我找不到任何答案。

我想了解的步骤(包括指定AD凭据的位置)。

我不介意用户是使用System.DirectoryServices还是System.DirectoryServices.AccountManagement创建的。

以下是详细信息。 DC是远程计算机(坐在我的网络中)。例如,域名为contoso-test.com

2 个答案:

答案 0 :(得分:1)

一点谷歌搜索和耐心都可以解决问题。

这是我之前写过的示例代码。

public static string CreateUser(string username, string password)
{
    //CREATE CONNECTION TO ACTIVE DIRECTORY
    using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "contosco-test.com"))
    {
        //CREATE A NEW USERPRINCIPAL OBJECT
        using (UserPrincipal principal = new UserPrincipal(ctx))
        {
            principal.Enabled = true; //IF NOT ENABLED YOU CAN'T AUTHENTICATE THE USER
            principal.UserPrincipalName = username;
            principal.Name = "name";
            principal.DisplayName = "firstname lastname";
            principal.EmailAddress = "email@test.com";
            principal.VoiceTelephoneNumber = "12345678910";
            principal.GivenName = "firstname";
            principal.Surname = "lastname";
            principal.SetPassword(password);
            try
            {
               principal.Save();
            }
            catch(Exception ex)           
            {
                throw;
            }
            //SEARCH FOR THE USER THAT JUST HAS BEEN CREATED
            using (var newUser = UserPrincipal.FindByIdentity(ctx, IdentityType.UserPrincipalName, username))
            {
                if (newUser != null)
                {
                   return newUser.Guid.ToString();
                }
            }
         }
    }
  return null;
}

我正在使用System.DirectoryServices.AccountManagement命名空间。

答案 1 :(得分:0)

public void AddToGroup(string userDn, string groupDn)
{
    try
    {
        DirectoryEntry dirEntry = new DirectoryEntry("LDAP://" + groupDn);
        dirEntry.Properties["member"].Add(userDn);
        dirEntry.CommitChanges();
        dirEntry.Close();
    }
    catch (System.DirectoryServices.DirectoryServicesCOMException E)
    {
        //doSomething with E.Message.ToString();
    }
}