2008-11-27 31 views

Trả lời

33

Check-out System.DirectoryServices (Một tài liệu tham khảo ASP.NET 2.0):

C# -example để có được các nhóm:

using System.DirectoryServices; 

public class test 
{ 

    private void main() 
    { 
     foreach (string @group in GetGroups()) 
     { 
      Debug.Print(@group); 
     } 
    } 

    public List<string> GetGroups() 
    { 
     DirectoryEntry objADAM = default(DirectoryEntry); 
     // Binding object. 
     DirectoryEntry objGroupEntry = default(DirectoryEntry); 
     // Group Results. 
     DirectorySearcher objSearchADAM = default(DirectorySearcher); 
     // Search object. 
     SearchResultCollection objSearchResults = default(SearchResultCollection); 
     // Results collection. 
     string strPath = null; 
     // Binding path. 
     List<string> result = new List<string>(); 

     // Construct the binding string. 
     strPath = "LDAP://stefanserver.stefannet.local"; 
     //Change to your ADserver 

     // Get the AD LDS object. 
     try 
     { 
      objADAM = new DirectoryEntry(strPath); 
      objADAM.RefreshCache(); 
     } 
     catch (Exception e) 
     { 
      throw e; 
     } 

     // Get search object, specify filter and scope, 
     // perform search. 
     try 
     { 
      objSearchADAM = new DirectorySearcher(objADAM); 
      objSearchADAM.Filter = "(&(objectClass=group))"; 
      objSearchADAM.SearchScope = SearchScope.Subtree; 
      objSearchResults = objSearchADAM.FindAll(); 
     } 
     catch (Exception e) 
     { 
      throw e; 
     } 

     // Enumerate groups 
     try 
     { 
      if (objSearchResults.Count != 0) 
      { 
       foreach (SearchResult objResult in objSearchResults) 
       { 
        objGroupEntry = objResult.GetDirectoryEntry(); 
        result.Add(objGroupEntry.Name); 
       } 
      } 
      else 
      { 
       throw new Exception("No groups found"); 
      } 
     } 
     catch (Exception e) 
     { 
      throw new Exception(e.Message); 
     } 

     return result; 
    } 

} 

VB-dụ để có được các nhóm:

Imports System.DirectoryServices 

Public Class Form1 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    For Each group As String In GetGroups() 
     Debug.Print(group) 
    Next 
End Sub 

Public Function GetGroups() As List(Of String) 
    Dim objADAM As DirectoryEntry     ' Binding object. 
    Dim objGroupEntry As DirectoryEntry    ' Group Results. 
    Dim objSearchADAM As DirectorySearcher   ' Search object. 
    Dim objSearchResults As SearchResultCollection ' Results collection. 
    Dim strPath As String       ' Binding path. 
    Dim result As New List(Of String) 

    ' Construct the binding string.   
    strPath = "LDAP://stefanserver.stefannet.local" 'Change to your ADserver 

    ' Get the AD LDS object. 
    Try 
     objADAM = New DirectoryEntry(strPath) 
     objADAM.RefreshCache() 
    Catch e As Exception 
     Throw e 
    End Try 

    ' Get search object, specify filter and scope, 
    ' perform search. 
    Try 
     objSearchADAM = New DirectorySearcher(objADAM) 
     objSearchADAM.Filter = "(&(objectClass=group))" 
     objSearchADAM.SearchScope = SearchScope.Subtree 
     objSearchResults = objSearchADAM.FindAll() 
    Catch e As Exception 
     Throw e 
    End Try 

    ' Enumerate groups 
    Try 
     If objSearchResults.Count <> 0 Then 
      Dim objResult As SearchResult 
      For Each objResult In objSearchResults 
       objGroupEntry = objResult.GetDirectoryEntry 
       result.Add(objGroupEntry.Name) 
      Next objResult 
     Else 
      Throw New Exception("No groups found") 
     End If 
    Catch e As Exception 
     Throw New Exception(e.Message) 
    End Try 

    Return result 
End Function 
End Class 
+0

lớn công cụ, làm việc như một say mê cho tôi! –

+0

Cảm ơn Stefan cho bài viết tuyệt vời ... tôi đã thử sử dụng mã vb trong ứng dụng web của tôi nhưng dường như không hoạt động ... bạn có thể làm sáng tỏ một số ánh sáng không? mcuh đánh giá cao .._____ –

+0

@mo, bạn đã thay đổi đường dẫn/URL để khớp * * AD-server của bạn chưa? Nó không phải là một máy chủ AD thực trong ví dụ của tôi. – Stefan

1

Microsoft .NET Framework cung cấp thư viện chuẩn để làm việc với Active Directory: System.DirectoryServices namespace trong System.DirectoryServices.dll.

Microsoft khuyến cáo sử dụng hai lớp chính từ namespace System.DirectoryServices: DirectoryEntryDirectorySearcher. Trong hầu hết các trường hợp, nó là đủ để chỉ sử dụng lớp DirectorySearcher.

Bạn có thể tìm thấy một số ví dụ trong số CodeProject article này.

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