c#通过sAMAccountname查找活动目录用户

时间:2013-10-31 16:54:17

标签: c# active-directory

新手到.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字符串中更改它不起作用。有人可以帮助这个改变的正确语法吗?感谢

1 个答案:

答案 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();
            }

MSDN:UserPrincipal Class