c# - 使用 .NET 在 sAMAccountName 中创建超过 20 个字符的用户时出错

标签 c# .net vb.net active-directory

我正在尝试以编程方式创建一个新的 Active Directory 用户,将 sAMAccountName 属性设置为大于 20 个字符的值。

当我调用 DirectoryEntry.CommitChanges() 时,出现错误:

00000523: SysErr: DSID-031A0FB6, problem 22 (Invalid argument), data 0

如果我尝试创建一个新用户并将 sAMAccountName 设置为小于 20 个字符,一切正常。

在有人说 sAMAccountName 的限制是 20 个字符之前,我想指出,如果我尝试使用 Windows 工具“Active Directory 用户和计算机”创建具有超过 20 个字符的 sAMAccountName 的同一用户,一切正常.我可以使用 LDP 工具在 AD 中看到新条目,并且该条目的 sAMAccountName 超过 20 个字符。

为什么我不能使用 .NET 以编程方式创建用户?

下面是我使用的代码:

Using objDirEnt As DirectoryEntry = New DirectoryEntry("LDAP://my.domain.com/cn=Users,dc=my,dc=domain,dc=com", "username", "Password", AuthenticationTypes.Secure Or AuthenticationTypes.Sealing)
    Using usuario As DirectoryEntry = objDirEnt.Children.Add("CN=aaaaaa bbbbbbbbbb ccccccccc (aaaaaa.bbbbbb.ccccccccc)", "user")
        usuario.Properties("sAMAccountName").Value = "aaaaaa.bbbbbb.ccccccccc"
        usuario.Properties("userAccountControl").Value = AdsUserFlags.PasswordNotRequired
        usuario.Properties("name").Value = "aaaaaa bbbbbbbbbb ccccccccc"
        usuario.Properties("givenName").Value = "aaaaaa"
        usuario.Properties("sn").Value = "bbbbbbbbbb ccccccccc"
        usuario.CommitChanges()
    End Using
End Using

最佳答案

根据这篇文章,此字段的默认限制是少于 20 个字符: http://msdn.microsoft.com/en-us/library/ms679635.aspx 我没有尝试使用 20 个字符的 sAMAccountName 创建用户,但也许可以使用 Novell LDAP 库。我不得不使用它,因为我们也需要支持其他 LDAP 服务。 http://www.novell.com/coolsolutions/feature/11204.html

我还找到了这些帖子: https://serverfault.com/questions/344815/how-to-add-a-user-in-active-directory-with-name-longer-than-20-characters

关于c# - 使用 .NET 在 sAMAccountName 中创建超过 20 个字符的用户时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9036861/

相关文章:

c# - 之间的区别!和 ~ 在 C# 中

c# - 如何打印 C# 3D 锯齿状数组

c# - 如何在 C# 上将 MySQL 查询转换为 JSON

c# - 在 C# 中支持 VB.NET 的导入命名空间功能

mysql - INSERT INTO ... SELECT,每个查询只需要插入一个元素

c# - 如何使用 C# 代码将 pdf 转换为图像?

.net - Excel 引用 COM 与 .NET

c# - 返回字符串时,Database.AddOutParameter 中的 Size 参数使用什么?

.net - 从 .NET 调用 mysql 中的存储过程会引发错误 - 所有参数必须显式设置其类型

asp.net - 隐藏 gridview 列标题