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

相關問題