2010-03-23 21 views
6

Tôi có danh sách số nhận dạng bảo mật của người dùng và tôi cần có danh sách userPrincipalName's ... có cách nào để tôi có thể lấy nó mà không cần tải lên DirectoryEntry của người dùng và kéo thuộc tính userPrincipalName không?Cho SID của người dùng, làm cách nào để nhận userPrincipalName của họ?

tôi cần những phương pháp hiệu quả nhất có thể vì đây được thực hiện rất nhiều

Trả lời

-1

Bạn có thể có được điều này bằng cách sử dụng phương pháp LookupAccountSid() để gọi ra để Win32. Có một số mã mẫu trên trang mà tôi đã liên kết đến đó cho thấy một ví dụ đơn giản.

6

Nếu bạn đang sử dụng .NET 3.5, hãy xem bài viết MSDN tuyệt vời này Managing Directory Security Principals in the .NET Framework 3.5.

Nó cho thấy khả năng tìm kiếm nâng cao mới của không gian tên System.DirectoryServices.AccountManagement của .NET 3.5.

Một tính năng đẹp là phương pháp FindByIdentity, cho phép bạn tìm người dùng (hoặc nhóm) dựa trên danh tính - cho dù đó là tên người dùng chính, tên phân biệt, GUID hoặc SID - nó sẽ chỉ hoạt động :

UserPrincipal user = 
    UserPrincipal.FindByIdentity(principalContext, 
           IdentityType.Sid, (value)); 

Bạn cần đảm bảo cung cấp SID theo đúng định dạng - xem tài liệu MSDN để biết chi tiết.

Khi bạn có người sử dụng đối tượng chính, chỉ nhận được tên chính người sử dụng của nó:

if(user != null) 
{ 
    string upn = user.UserPrincipalName; 
} 

Mã mẫu cho bài viết thậm chí còn có hai phương pháp helper thêm FindByIdentityGuidFindByIdentitySid để đạt được chính xác những gì bạn đang tìm kiếm !

Hãy kiểm tra và sử dụng nó.

+0

Thật không may là tôi bị kẹt trên .Net 2.0, nhưng thật tuyệt khi biết điều này tồn tại khi chúng tôi nâng cấp. Cảm ơn –

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