2009-12-29 29 views
5

Làm cách nào để nhận tư cách thành viên nhóm của người dùng từ AD, tốt nhất là sử dụng cùng một mẫu như tôi sử dụng để sở hữu thuộc tính của người dùng như dưới đây? Tôi đã tìm thấy một số ví dụ, nhưng bộ giao nhau của tất cả các kỹ thuật ví dụ là khá nhỏ, và thiếu độ kín và đơn giản của truy vấn cục này:Nhận tư cách thành viên nhóm của người dùng từ Active Directory

 var adServer = ConfigurationManager.AppSettings["adServer"] ?? "localhost"; 
     var remoteRoot = new DirectoryEntry(GetRootPath(adServer)); 
     var searcher = new DirectorySearcher(remoteRoot, string.Format("(SAMAccountName={0})", shortUserName)); 

     searcher.PropertiesToLoad.Add("Department"); 
     SearchResult result = null; 
     result = searcher.FindOne(); 

Trả lời

6

Bạn có trên NET 3.5? Nếu vậy, nó rất dễ dàng:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"); 

string userName = "yourUser"; 

UserPrincipal user = UserPrincipal.FindByIdentity(ctx, userName); 

PrincipalSearchResult<Principal> results = user.GetAuthorizationGroups(); 

Tìm người dùng của bạn, và sau đó gọi các .GetAuthorizationGroups() vào chính bạn sử dụng - trả về tất cả các nhóm người sử dụng thuộc về, trong đó có nhóm chính mình, và bất kỳ thành viên nhóm lồng nhau.

Kiểm tra điều này MSDN article để có thêm tính ưu việt mới trong .NET 3.5 khi nói đến xử lý AD.

Trong .NET 2.0, mọi thứ trở nên lộn xộn hơn nhiều ...

+0

Cảm ơn. Đó là một nửa làm việc, nhưng tôi nhận được một lỗi "Không thể truy cập thông tin tên miền" (một cái gì đó như thế) khi tôi gọi GetAuthorizationGroups() – ProfK

+0

bạn đã chỉ định tên miền NetBIOS của bạn khi xây dựng bối cảnh chính? Ví dụ. "YOURDOMAIN", thay vì "yourcompany.com"? –

+0

hoạt động cho tôi. Đã cứu tôi rất nhiều công việc! Cảm ơn – paul

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