Разрешения, необходимые для добавления учетной записи Active Directory через код - PullRequest
0 голосов
/ 30 августа 2011

Я пытаюсь написать программу, которая автоматически создала бы учетные записи активных каталогов, используя данные из внешнего источника данных.Проблема, с которой я сталкиваюсь, заключается в том, что я всегда получаю исключение UnAuthorizedAccessException, но я на всю жизнь не могу думать о том, какие разрешения применять.Я даже прошел весь путь до корневого объекта и получил полный контроль над своей учетной записью, который, кажется, не имеет никакого значения.Я знаю, что могу получить доступ к серверу, поскольку объекты OrganizationUnit и de заполнены правильно.

 DirectoryEntry de = new DirectoryEntry("LDAP://MYLOCALADDRESS");            
 de.Password = "thePassword";
 de.Username = "theUserName"; 
 de.AuthenticationType = AuthenticationTypes.Secure ;
 DirectoryEntry organizationalUnit = de.Parent;
 DirectoryEntry newUser = organizationalUnit.Children.Add("TESTADD  ", de.SchemaClassName);

 //Exception happens on this line
 newUser.CommitChanges();

Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 30 августа 2011

С первого взгляда я бы сказал, что ваш "TESTADD" должен начинаться с "CN ="

. Для активного каталога я получаю все свои образцы из этого codeproject :

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...