0

以下是用于重置密码的代码。
我想停止这种行为。
只有新密码才能使用。用户不应该能够使用旧密码登录。使用C#在Active Directory中重置用户密码后,旧密码和新密码都可以使用

   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; 
       } 
+0

有人可以帮助我吗? –

+0

您可能首先要询问http://serverfault.com/,因为首先允许一个以上的密码看起来很特殊,甚至可能不可能。据我所知,这首先不是严格可行的,所以你可能还有别的事情正在进行。这不太可能与c#调用相关,并且[你正在调用的](https://msdn.microsoft.com/en-us/library/aa746344(v = vs.85).aspx)没有提及多个密码或不得不先删除旧密码或其他东西。如果可能的话,你至少应该检查返回值。 – Quantic

回答

1

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

相关问题