четверг, 30 июня 2011 г.

Получение списка активных пользователей Active Directory на C# .NET

UPD: Утилита проверки активных пользователей домена - http://arxont.blogspot.com/2011/06/blog-post.html

Вводная: Необходимо было получить список только активных (не заблокированных) пользователей (к примеру для аудита). Есть множество средств для этого, начиная от внешних утилит (которые не рекомендуется использовать из соображений паранойи) и скриптов powershell (которых я не слишком хорошо знаю). Было решено это делать на C#. Вот пример кода который выводит только активных пользователей -


using System;
using System.Windows.Forms;
 
//Необходимо подключить ссылку
using System.DirectoryServices;
 
namespace DomainControl
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            //Берём поиск по всему домену, 
            DirectoryEntry dir = new DirectoryEntry("");
            DirectorySearcher search = new DirectorySearcher(dir);
 
            //Вот сам фильтр
            search.Filter = "(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))";    
 
            search.SearchScope = SearchScope.Subtree;    
 
            // FindAll находит все, что находиться в объекте gs (и ниже, так как указан флаг Subtree).
            foreach (SearchResult result in search.FindAll())
            {
                textBox1.Text += result.GetDirectoryEntry().Name + Environment.NewLine;
            }
        }
    }
}
 

Комментариев нет:

Отправить комментарий