Active Directory (AC) üzerinde kullanıcı şifresi değiştirmek için öncelikle projemize System.DirectoryService ve System.DitectoryService.AccountManagement dll lerinin projeye referans olarak verilmesi gerekmektedir.
using (var context = new PrincipalContext(ContextType.Domain, DomainName, UserName, Password))
{
using (var user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, userName1))
{
user.SetPassword(password1);
}
}
- DomainName: Üzerinde çalışılan domain adı (string)
- UserName: Sunucuya bağlanmak için kullanılacak olan kullanıcı adı
- Password: Sunucuya bağlanmak için kullanılacak olan şifre
- userName1: Şifresi değiştirilecek olan kullanıcı
- password1: Kullanıcıya atanacak yeni şifre
Burada PrincipalContext nesnesi “new PrincipalContext(ContextType.Domain)” olarak oluşturulursa programımız çalışırken Windows hesabından doğrulama alır.
Program çalışırken LDAP sunucusuna bağlanamama hatası vermesi durumunda domain adını sunucudaki adıyla tam olarak yazın. Örneğin domain adınız “erciyes” ise tam adı da “erciyes.local” ise constructure parametresine “erciyes.local” olarak yazın.
C# ile windows kullanıcı şifresi nasıl değiştirilir yardımcı olursanız sevinirim.
local kullanıcı şifesi değiştirmek için aynı kodu kullanabilirsiniz. Ancak PrincipalContext parametresine ContextType.Machine vermeniz gerekmektedir.
var Context = new PrincipalContext(ContextType.Machine);
var User = UserPrincipal.FindByIdentity(Context, IdentityType.SamAccountName, username);
User.ChangePassword(eski_sifre, yeni_sifre);
veya yönetici yetkisine sahipseniz yazıdaki gibi direk setPassword metodu da kullanabilirsiniz.
Çok sağ olun gerçekten çok işime yaradı. İyi çalışmalar…