0

.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 字符串中更改它不起作用。有人可以帮助使用此更改的正确语法吗?谢谢

4

1 回答 1

3

you can use System.DirectoryServices.AccountManagement Namespace to manage acitve directory account.

code like

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

于 2013-10-31T17:14:14.107 回答