Sokadjára futok bele olyan feladatba, hogy Active Directory felhasználókat kell kezelnem .NET kódból. A korábbi esetekből általában csak annyira emlékszem, hogy mindent sikerült megcsinálni, de sokat szöszöltem vele. Ennek vége: mostantól minden Active Directory feladatot és a hozzá tartozó megoldást lebloggolok, hogy a jövőben vissza tudjam őket keresni. A mai megoldandó feladat:
Létező felhasználóknak jelszócserélő metódus írása (nem reset, csere)
private void ChangePassword( string adPath, string userName, string oldPassword, string newPassword )
{
DirectoryEntry activeDirectory = new DirectoryEntry( adPath, userName, oldPassword );
DirectorySearcher search = new DirectorySearcher( activeDirectory );
using( DirectoryEntry activeDirectory = new DirectoryEntry( adPath, userName, oldPassword ) )
{
using( DirectorySearcher search = new DirectorySearcher( activeDirectory ) )
{
search.Filter = "(SAMAccountName=" + userName + ")";
SearchResult result = search.FindOne();
DirectoryEntry user = new DirectoryEntry( result.Path );
user.Invoke( "ChangePassword", new object[] { oldPassword, newPassword } );
}
}
}
Szuper.