在C#中更改Active Directory密码

起初请原谅我的英文,这不是我的母语。

那么,这是我的问题:我正在开发一个pipe理Active Directory的Web平台。 我可以创build,删除,编辑组,用户,OU等等。

但。 好但是。 当连接的用户想要用平台更改自己的密码时,就会失败。 它来自DirectoryEntry.Invoke。

我使用DirectoryServices.DirectoryEntry:

directoryEntry.Invoke("SetPassword", password); directoryEntry.Commit(); 

所以我尝试了System.DirectoryServices.AccountManagement,那样:

 PrincipalContext ctx = new PrincipalContext(ContextType.Machine); UserPrincipal user = UserPrincipal.FindByIdentity(ctx, Username); user.SetPassword(password_); user.Save(); 

不同的方式,同样的问题。 这些代码工作,只有当用户尝试编辑自己的密码时才会失败。

连接的用户如何更改自己的密码? 为什么这个奇怪的问题?

任何帮助将是伟大的。

我认为这里的问题是,你的应用程序没有权限更新密码是正确的!

授予ASP.NET应用程序对该目录权限的授权方法是通过以服务帐户标识运行的特权IIS应用程序池或通过以服务帐户标识运行的COM +实体的方式实现的。

SetPassword命令仅适用于pipe理员用户,因为它强制设置新密码而不必知道现有密码。 非pipe理员用户将需要使用ChangePassword,这需要您也将现有密码与新密码一起传递。