新手到.Net 4.0 我们有一个脚本,当前使用以下代码重置用户密码:
DirectoryEntry de = new DirectoryEntry("myLdapString");
DirectoryEntry ChgPwd = de.Children.Find("CN=" + "myuserid", "user");
ChgPwd.Invoke("SetPassword", new object[] { "newPWD" });
ChgPwd.CommitChanges();
我想改变它,以便我指向使用“sAMAccount =”而不是“CN =”的用户。但是在上面的Find字符串中更改它不起作用。有人可以帮助这个改变的正确语法吗?感谢
答案 0 :(得分:3)
您可以使用System.DirectoryServices.AccountManagement命名空间来管理活动目录帐户。
代码
using(PrincipalContext principalContext = new PrincipalContext( ContextType.Domain,
TargetDomain,
TargetDomainUserName,
TargetDomainPassword))
using(var userPrincipal = UserPrincipal.FindByIdentity(principalContext, IdentityType.SamAccountName, "somaloginname"))
{
userPrincipal.SetPassword(newPassword);
//or userPrincipal.ChangePassword
userPrincipal.Save();
}