Создание пользователя в активном каталоге - PullRequest
3 голосов
/ 26 июля 2010

Я собираюсь создать веб-часть для создания пользователя в активной директории.

Для создания учетной записи пользователя я использую такой метод:

public string CreateUserAccount(string ldapPath, string userName, 
    string userPassword)
{
    try
    {
        string oGUID = string.Empty;
        string connectionPrefix = "LDAP://" + ldapPath;
        DirectoryEntry dirEntry = new DirectoryEntry(connectionPrefix);
        DirectoryEntry newUser = dirEntry.Children.Add
            ("CN=" + userName, "user");
        newUser.Properties["samAccountName"].Value = userName;
        newUser.CommitChanges();
        oGUID = newUser.Guid.ToString();

        newUser.Invoke("SetPassword", new object[] { userPassword });
        newUser.CommitChanges();
        dirEntry.Close();
        newUser.Close();
    }
    catch (System.DirectoryServices.DirectoryServicesCOMException E)
    {
        //DoSomethingwith --> E.Message.ToString();

    }
    return oGUID;
}

При выполнении этого метода произошла следующая ошибка:

"Сервер не работает"

Ответы [ 2 ]

3 голосов
/ 26 июля 2010

говорят, что у нас установлен активный каталог с доменом TestDomain.com, и у вас есть подразделение (организационная единица) с именем USERS, и у вас есть пользователь с именем TestUser

, поэтому мы можем сказать следующее

ldapDomain : полный домен как TestDomain.com или dc = contoso, dc = com
objectPath : полный путь к объекту: CN= TestUser, OU = ПОЛЬЗОВАТЕЛИ, DC = TestDomain, DC = com
userDn : отличительное имя пользователя: CN = TestUser, OU = USERS, DC = TestDomain, DC = com

при создании пользователя вы должны определить, где вы хотите создать, определив его путь (путь ldap)

В нашем примере мы можем рассмотреть его следующим образом:

string ldapPath = "LDAP://OU=USERS, DC=TestDomain, DC=com"

Для получения дополнительной информации проверьтеследующие ссылки:
http://www.selfadsi.org/ldap-path.htm
http://www.informit.com/articles/article.aspx?p=101405&seqNum=7
http://msdn.microsoft.com/en-us/library/system.directoryservices.directoryentry.path.aspx

1 голос
/ 22 августа 2013

Использование System.DirectoryServices

To use this namespace you need to add reference  System.DirectoryServices.dll 

       DirectoryEntry ouEntry = new DirectoryEntry("LDAP://OU=TestOU,DC=TestDomain,DC=local");

        for (int i = 3; i < 6; i++)
        {
            try
            {
                DirectoryEntry childEntry = ouEntry.Children.Add("CN=TestUser" + i, "user");
                childEntry.CommitChanges();
                ouEntry.CommitChanges();
                childEntry.Invoke("SetPassword", new object[] { "password" });
                childEntry.CommitChanges();
            }
            catch (Exception ex)
            {

            }
        }

Использование System.DirectoryServices.AccountManagement

 To use this namespace you need to add reference  System.DirectoryServices.AccountManagement.dll 

              PrincipalContext ouContex = new PrincipalContext(ContextType.Domain, "TestDomain.local",           "OU=TestOU,DC=TestDomain,DC=local");

        for (int i = 0; i < 3; i++)
        {
            try
            {
                UserPrincipal up = new UserPrincipal(ouContex);
                up.SamAccountName = "TestUser" + i;
                up.SetPassword("password");
                up.Enabled = true;
                up.ExpirePasswordNow();
                up.Save();
            }
            catch (Exception ex)
            {

            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...