Почему я получил «Отказано в доступе (исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))» при создании пользователя в Active Directory - PullRequest
3 голосов
/ 07 августа 2010

Я использую следующий код для создания пользователя в Active Directory

DirectoryEntry newUser = null;
            try
            {
                if (!Authenticate()) return null;

                newUser = location.Children.Add("CN=" + userName, "user");
                newUser.Properties["samAccountName"].Value = userName;
                newUser.Properties["cn"].Value = userName;

                newUser.CommitChanges();
                string guid = newUser.Guid.ToString();
                newUser.Invoke("SetPassword", new object[] { password });
                newUser.CommitChanges();
                DomainDirectoryEntry.Close();
                newUser.Close();
                return guid;
            }
            catch
            {
                throw;
            }
            finally
            {
                newUser = null;
            }

Если я запускаю этот код с веб-страницы asp.net, он создает пользователя в Active Directory и создает отключенного, но выдает исключение Exception has been thrown by the target of an invocation., а когда я получаю внутреннее исключение из этого исключения, он получает меня Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDEN I ' Я уверен, что учетная запись, которую я использую для доступа к Active Directory, является полным администратором.

Я не определил причину и почему он создает пользователя, но он генерирует ошибку при установке пароля ... Может ли кто-нибудь подсказать мне, как получить ошибку?

Ответы [ 2 ]

1 голос
/ 08 августа 2010

Я перепробовал много подходов, и к концу мы обнаружили, что проблема возникает, когда код запускается из SharePoint, поэтому мы поместили код в приведенный ниже код, и он успешно работает

SPSecurity.RunWithElevatedPrivileges(delegate()
  {
     ......
  }
1 голос
/ 07 августа 2010

Полагаю, у вас (пользователь пула приложений или олицетворенный пользователь) нет прав для этого.

По умолчанию у пользователя будет NETWORK SERVICE, который, я уверен, не имеет разрешения для этого.

Как узнать, какую учетную запись вы используете для доступа к Active Directory?

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