【问题标题】:Duplicate Entry error when enabling AD account启用 AD 帐户时出现重复输入错误
【发布时间】:2011-06-13 15:46:21
【问题描述】:

我正在尝试以编程方式将用户添加到 Active Directory,但我一直遇到错误 - 无论我创建什么用户,只要我启用帐户,就会引发“重复条目”错误。这是我正在使用的代码:

DirectoryEntry NewUser = AD.Children.Add("CN=" + username, "User");
NewUser.CommitChanges();

//Add user information
NewUser.Invoke("SetPassword", password);
NewUser.Properties["givenName"].Value = FirstName;
NewUser.Properties["sn"].Value = LastName;
NewUser.Properties["mail"].Value = email;
NewUser.Properties["userPrincipalName"].Value = username + @"domainname";
NewUser.Properties["userAccountControl"].Add(0x200);//enable account
NewUser.CommitChanges();

当我注释掉更改 userAccountControl 的行时,一切正常。我什至尝试使用以下代码创建一个新条目并以这种方式修改它:

DirectoryEntry editUser = getUserEntry(username);
editUser.Properties["userAccountControl"].Add(0x200);//enable account
editUser.CommitChanges();

但这仍然会引发相同的错误。 getUserEntry 只是从给定用户名的 AD 中获取目录条目。谁能看到在这种情况下会出现重复输入错误的原因?

【问题讨论】:

  • 从我看来,您似乎没有为 samAccountName 设置任何值 - 需要设置,并且每个用户帐户都必须是唯一的
  • 我认为如果您不添加 sAMaccountName,它会自动设置为唯一 ID。如果我注释掉启用帐户行,禁用的帐户都有一个唯一的 sAMAccount 名称(我直接在 AD 中查找),例如:$V31000-64AQ2483EE3G、$341000-ACDLI5Q4HRVB 等...

标签: c# active-directory active-directory-group


【解决方案1】:

你可以尝试替换为:

DirectoryEntry editUser = getUserEntry(username);
editUser.Properties["userAccountControl"][0] = (0x200);//enable account 
editUser.CommitChanges(); 

您可能知道某些属性可以是多值的,userAccountControl 不能,但是在您尝试做的代码中,我的意思是多值它。在我的代码中,我只是分配了一个新值(它将在 vue 的纯 LDAP 点上进行替换)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多