c# - ASP.NET Cómo obtener una lista de grupos en Active Directory
vb.net active-directory (2)
Consulte System.DirectoryServices (Una referencia de ASP.NET 2.0):
C # -ejemplo para obtener 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-example para obtener grupos:
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
¿Cómo puedo obtener una lista completa de grupos en mi Active Directory?
Microsoft .NET Framework proporciona una biblioteca estándar para trabajar con el espacio de nombres Active Directory: System.DirectoryServices 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 artículo de CodeProject .