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을 실행하는 것입니다.