使用 C# 在 Active Directory 中重置用户密码后,旧密码和新密码均有效

After resetting user's password in Active Directory using C#, both old and new passwords are working

以下是用于重置密码的代码。
我想停止这种行为。
只有新密码才有效。用户应该无法使用旧密码登录。

             using (var search= new DirectorySearcher(dir))
                {
                    search.Asynchronous = false;
                    search.CacheResults = false;

                    dirSearch.Filter = "(&(objectCategory=User)(objectClass=person)(name=" + UserName.Trim() + "))";

                    SearchResult result = dirSearch.FindOne();

                    if (result != null)
                    {
                        using (var entryUpdate = result.GetDirectoryEntry())
                        {

                            entryUpdate.Invoke("setpassword", new object[] { NewPassword });
                            entryUpdate.CommitChanges();

                            //entryUpdate.RefreshCache();

                        }
                    }
                    result = null;
                }

只有当 Active Directory 复制中断时,才有可能同时拥有两个不同的密码。这实际上不是代码问题。修复它的方法是确定 AD 复制损坏的位置。您可以通过 运行 命令 repadmin /showrepl 快速检查 AD 运行状况。如果您看到错误,则在任何域控制器上 运行 dcdiag /v 在输出中显示错误。我现在最喜欢的一个确定 AD 运行状况的新工具也是 运行 PowerShell 实用程序 ADHealthCheck