29 нояб. 2012 г.

Active Directory средствами C#

Некоторое время назад возникла производственная необходимость организовать работу с Active Directory средствами C#. Как, наверное, у каждого программиста у меня уже был заготовлен класс для работы с Active Directory использующий пространство имен .NET System.DirectoryServices. Но по неясным причинам, часть реализованных и работоспособных ранее методов в этот раз к желаемым результатам не приводили. В частности, отказалась работать функция удаления пользователя из каталога. В поисках решения набрел на статью MSDN Managing Directory Security Principals in the .NET Framework 3.5, в которой было описано использование более нового пространства имен System.DirectoryServices.AccountManagement, позволяющего реализовать все те же функции более компактно и логично.
В поисках примеров использования нового пространства имен, была найдена статья Raymund Macaalay Everything in Active Directory via C#.Net 3.5 (Using System.DirectoryServices.AccountManagement) (другой ее вариант можно увидеть на www.codeproject.com). Представленный в статье код практически полностью удовлетворял моим потребностям, отменяя необходимость очередного «изобретения велосипеда». Однако в указанном коде содержались «ляпы» вроде «равно» там, где должно быть «не равно» и устаревшие конструкции. Для сохранности и дальнейшего использования полученного класса (в первую очередь в личных целях), было решено опубликовать своего рода перевод статьи Raymund’а с минимальными изменениями кода.