如何更改已隐藏和已过期的AD用户帐户的密码

时间:2015-09-16 22:53:01

标签: c# active-directory

如果域AD用户帐户隐藏 *且已过期,是否有办法在.net / c#中更改密码(未重置)?

我目前使用的代码是 System.DirectoryServices.AccountManagement ,基本上就像是

using (var context = PrincipalContext(ContextType.Domain, server, container)
{
  var directoryUser = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, username);
  directoryUser.ChangePassword(oldPassword, newPassword);
}

这适用于应用程序服务帐户可以找到的用户,但某些“隐藏”用户位于应用程序服务帐户没有读取权限的OU中,因此无法使用null用户。

我想我会改变它,以便用用户自己的用户名和密码建立 PrincipalContext (因为他们有权找到自己) - 但通常帐户已过期他们来更改密码的时间,因此帐户过期后,FindByIdentity调用失败,因为无效凭据。

除非我以用户身份搜索,否则我无法找到用户,但我无法搜索用户,因为他们已过期,我只能通过让他们更改来解决这些问题他们的密码。

如果他们可以访问工作站,他们可以使用Windows登录控件更改密码,但如何在c#中实现相同级别的功能?

EDIT1:我希望找到一个不涉及具有对隐藏OU的读访问权限的服务帐户的解决方案 - 由于各种组织原因而难以实现。

0 个答案:

没有答案