如何在名称长度超过20个字符的Active Directory中添加用户?

我正在使用Windows 2008 R2服务器并尝试在Active Directory中添加用户。

我可以保存长度小于20个字符的用户ID。 但是,当我尝试将此值增加到30个字符,我得到这个错误:

“System.DirectoryServices.DirectoryServicesCOMException (0x8007001F): A device attached to the system is not functioning. (Exception from HRESULT: 0x8007001F)” 

这个错误,当我在网上search给我的各种链接说:

我正在使用下面的代码在Active Directory中添加用户

 public static void AddUser(ADUser adUser) { if (_logger.IsDebugEnabled) _logger.Debug("ADHelper.cs: Enter AddUser"); // Local variables DirectoryEntry oDE = null; DirectoryEntry oDENewUser = null; DirectoryEntries oDEs = null; try { oDE = GetDirectoryEntry(GetADPath(adUser.UserType)); // 1. Create user account oDEs = oDE.Children; oDENewUser = oDEs.Add("CN=" + adUser.UserName, "user"); // 2. Set properties SetProperty(oDENewUser, Constants.ADAttributes.givenName, adUser.FirstName); SetProperty(oDENewUser, Constants.ADAttributes.initials, adUser.MiddleInitial); SetProperty(oDENewUser, Constants.ADAttributes.sn, adUser.LastName); SetProperty(oDENewUser, Constants.ADAttributes.mail, adUser.Email); SetProperty(oDENewUser, Constants.ADAttributes.sAMAccountName, adUser.UserName); SetProperty(oDENewUser, Constants.ADAttributes.ChallengeQuestion, adUser.PasswordChallengeQuestion); SetProperty(oDENewUser, Constants.ADAttributes.ChallengeAnswer, adUser.PasswordChallengeAnswer); SetProperty(oDENewUser, Constants.ADAttributes.ChallengeQuestion2, adUser.PasswordChallengeQuestion2); SetProperty(oDENewUser, Constants.ADAttributes.ChallengeAnswer2, adUser.PasswordChallengeAnswer2); // Sharepoint changes if (adUser.CompanyGroupSupplier != string.Empty) { SetProperty(oDENewUser, Constants.ADAttributes.CompanyGroupSupplier, adUser.CompanyGroupSupplier); } if (adUser.PersonalGroupAddress != string.Empty) { SetProperty(oDENewUser, Constants.ADAttributes.PersonalGroupAddress, adUser.PersonalGroupAddress); } if (adUser.PersonalGroupPhone != string.Empty) { SetProperty(oDENewUser, Constants.ADAttributes.PersonalGroupPhone, adUser.PersonalGroupPhone); } // Sharepoint changes oDENewUser.CommitChanges(); // 3. Set password SetPassword(oDENewUser.Path, adUser.Password); // 4. Enable account EnableAccount(oDENewUser); oDENewUser.Close(); oDE.Close(); if (_logger.IsDebugEnabled) _logger.Debug("ADHelper.cs: Exit AddUser"); } catch (ApplicationException appex) { if (_logger.IsErrorEnabled) _logger.Error("ADHelper.cs: Exception occurred in AddUser. Message: ", appex); throw appex; } catch (Exception ex) { if (_logger.IsErrorEnabled) _logger.Error("ADHelper.cs: Exception occurred in AddUser. Message: ", ex); throw ex; } finally { if (oDENewUser != null) { oDENewUser.Dispose(); oDENewUser = null; } if (oDEs != null) { oDEs = null; } if (oDE != null) { oDE.Dispose(); oDE = null; } } } 

如何将Active Directory中的sAMAccountName长度增加到30个字符左右?

正如你已经发现并在你的问题中陈述,该属性被限制为20个字符( MSDN文章 )。 这是为了向后兼容。 活动目录本身是施加这个限制,因此你不能以编程方式覆盖它。

20个字符是“Pre-Windows 2000”名称的限制,也称为samAccountName。

有关更多信息,请参阅此前的答案: https : //serverfault.com/a/335565/20701