为什么我在Active Directory中创建用户时“访问被拒绝。(HRESULT异常:0x80070005(E_ACCESSDENIED))”

时间:2010-08-07 11:19:19

标签: c# asp.net active-directory

我使用以下代码在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.,当我得到此异常的内部异常时,它会得到{{1我确定我用来访问Active Directory的帐户是一个完整的管理员..

我没有确定原因以及为什么它会创建用户但是在设置密码时会产生错误...有没有人可以指导我获取错误?

2 个答案:

答案 0 :(得分:1)

我认为您(应用程序池用户或模拟用户)无权执行此操作。

默认情况下,用户将是NETWORK SERVICE,我确信它没有相应的权限。

您如何知道用于访问Active Directory的帐户?

答案 1 :(得分:1)

我尝试了很多方法,最后我们发现当代码从SharePoint运行时出现问题所以我们将代码放在下面的代码中并且运行成功

SPSecurity.RunWithElevatedPrivileges(delegate()
  {
     ......
  }