2012-01-27 18 views
8

Tôi đang cố tạo một người dùng Active Directory mới có lập trình thiết lập thuộc tính sAMAccountName với một giá trị lớn hơn 20 ký tự.Lỗi khi tạo người dùng có hơn 20 ký tự trong sAMAccountName sử dụng .NET

Khi tôi gọi là DirectoryEntry.CommitChanges(), tôi nhận được lỗi:

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

Nếu tôi cố gắng tạo một người dùng mới thiết lập sAMAccountName nhỏ hơn 20 ký tự tất cả mọi thứ làm việc.

Trước khi ai đó nói giới hạn của sAMAccountName là 20 ký tự, tôi muốn chỉ ra rằng nếu tôi cố gắng tạo cùng một người dùng có sAMAccountName hơn 20 ký tự bằng cách sử dụng công cụ Windows "Active Directory Users and Computers" công trinh. Tôi có thể thấy mục mới trong AD bằng cách sử dụng công cụ LDP và mục nhập có sAMAccountName với hơn 20 ký tự.

Tại sao tôi không thể tạo người dùng theo chương trình bằng .NET?

Dưới đây là đoạn code Tôi đang sử dụng:

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 
+2

sAMAccountName là <= 20 ký tự; userPrincipalName dường như có giới hạn cao hơn nhiều, nhưng yêu cầu 'user @ domain.local' – Nate

+1

Nếu giới hạn là 20 char, tại sao tôi có thể tạo người dùng bằng công cụ Active Directory Users and Computers? –

+2

Có thể sử dụng UserPrincipalName ... – Nate

Trả lời

8

hạn chế mặc định cho lĩnh vực này là ít hơn 20 ký tự theo bài viết này: http://msdn.microsoft.com/en-us/library/ms679635.aspx tôi đã không cố gắng để tạo ra một người dùng với một 20chars sAMAccountName nhưng có thể có thể với Thư viện LDAP của Novell. Tôi đã phải sử dụng nó vì chúng tôi cũng cần hỗ trợ các dịch vụ LDAP khác. http://www.novell.com/coolsolutions/feature/11204.html

Tôi cũng thấy những bài viết: https://serverfault.com/questions/344815/how-to-add-a-user-in-active-directory-with-name-longer-than-20-characters

+0

Cảm ơn, tôi sẽ thử Thư viện Novell. Tôi đoán đó là một giới hạn thư viện .NET. –

+0

ok, chúc may mắn! nó không phải là "người dùng thân thiện" và nhắc nhở nhiều mã hóa java, nhưng có lẽ nó sẽ hoạt động! – stylefish

0

Như giải thích bởi @stylefish, theo to Microsoft documentation đó là một tính năng. Bạn có lẽ có thể đặt ở đó, bởi một số cách hơn 20 caracters nhưng tôi khá chắc chắn rằng 20 caracters đầu tiên phải được uniq vào rừng.

Nếu bạn muốn sử dụng nhiều ký tự hơn cho thông tin đăng nhập của người dùng, bạn phải sử dụng userPrincipalName (trong biểu mẫu đăng nhập @ Dns-Domain). Trong lược đồ W2K3 chiều dài của thuộc tính này được giới hạn trong 1023 caracters. Bạn có thể tính toán một digest MD5 để tính toán samAccountName tương ứng.

Các vấn đề liên quan