Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用.NET创建sAMAccountName中超过20个字符的用户时出错_C#_.net_Vb.net_Active Directory - Fatal编程技术网

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

C# 使用.NET创建sAMAccountName中超过20个字符的用户时出错,c#,.net,vb.net,active-directory,C#,.net,Vb.net,Active Directory,我正试图通过编程方式创建一个新的Active Directory用户,设置值大于20个字符的sAMAccountName属性 调用DirectoryEntry.CommitChanges()时,会出现以下错误: 00000523:SysErr:DSID-031A0FB6,问题22(无效参数),数据0 如果我尝试创建一个新用户,将sAMAccountName设置为小于20个字符,那么一切都可以正常工作 在有人说sAMAccountName的限制是20个字符之前,我想指出,如果我尝试使用Window

我正试图通过编程方式创建一个新的Active Directory用户,设置值大于20个字符的sAMAccountName属性

调用DirectoryEntry.CommitChanges()时,会出现以下错误:

00000523:SysErr:DSID-031A0FB6,问题22(无效参数),数据0

如果我尝试创建一个新用户,将sAMAccountName设置为小于20个字符,那么一切都可以正常工作

在有人说sAMAccountName的限制是20个字符之前,我想指出,如果我尝试使用Windows工具“Active Directory用户和计算机”创建一个sAMAccountName超过20个字符的用户,那么一切都可以正常工作。我可以使用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个字符: 我还没有尝试创建一个具有20chars sAMAccountName的用户,但可能使用Novell LDAP库。我不得不使用它,因为我们还需要支持其他LDAP服务。

我还发现了这些帖子:
正如@stylefish所解释的,这是一项功能。你也许可以在那里,通过某种方式,超过20个字符,但我很确定,20个第一个字符必须是进入森林的唯一字符


如果要为用户登录使用更多字符,则必须使用表单中的login@Dns-域)。在W2K3架构中,此属性的长度限制为1023个字符。您可以计算摘要MD5来计算相应的samAccountName。

samAccountName是如果限制为20个字符,为什么我可以使用Active Directory用户和计算机工具创建用户?它可能使用UserPrincipalName…AD编程是一个令人沮丧的练习。我误读了Active Directory用户和计算机工具插入的值。该工具悄悄地截断了该值,因此它保留了20个字符。正如你买的所有东西所说的,这确实是广告强加的限制。谢谢你抽出时间。谢谢,我会试试Novell图书馆。我想这是一个.NET库限制。好吧,祝你好运!它不是那么“用户友好”,让人想起了很多java编码,但也许它会起作用!