2008-11-27 35 views

Respuesta

33

Comprueba cabo System.DirectoryServices (una referencia ASP.NET 2.0):

C# -Ejemplo llegar grupos:

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-ejemplo grupos para obtener:

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

gran cosas, funcionó como un encanto para mí! –

+0

Gracias Stefan por la gran publicación ... intenté usar el código vb en mi aplicación web pero parece que no funciona ... ¿podría arrojar algo de luz? mcuh apreciado ............ –

+0

@mo, ¿cambió la ruta/URL para que coincida con * su * servidor AD? No es un servidor AD real en mi ejemplo. – Stefan

1

Microsoft .NET Framework proporciona una biblioteca estándar para trabajar con Active Directory: System.DirectoryServices namespace en System.DirectoryServices.dll.

Microsoft recomienda utilizar dos clases principales del espacio de nombres System.DirectoryServices: DirectoryEntry y DirectorySearcher. En la mayoría de los casos, es suficiente usar la clase DirectorySearcher solamente.

Puede encontrar algunos ejemplos en este CodeProject article.

Cuestiones relacionadas