2016-09-06 5 views
2

이후 Microsoft에서 다음 두 패치를 릴리스하므로 C# 코드가 작동을 멈추고 항상 오류 메시지가 다시 전송됩니다 (시스템이 인증 요청을 처리하기 위해 도메인 컨트롤러에 접속할 수 없음). 나중에 다시 시도하십시오.) 암호를 변경하려고 할 때. 제출 된 자격 증명이 유효하지 않은 경우 https://support.microsoft.com/en-us/kb/3177108C# UserPrincipal.ChangePassword KB3167679 및 KB3177108

private void ChangePassword(string username, string oldPassword, string newPassword) 
{ 
    string machineName = Environment.MachineName; 
    string contextUser = String.Format(@"{0}\{1}", machineName, username); 

    using (PrincipalContext ctx = new PrincipalContext(ContextType.Machine, machineName, null, ContextOptions.Negotiate, contextUser, oldPassword)) 
    using (UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, username)) 
    { 
     user.ChangePassword(oldPassword, newPassword); 
    } 
} 

https://support.microsoft.com/en-us/kb/3167679

, 내가 제출 된 자격 증명이 유효하므로 잘못된 사용자 이름이나 암호를 말하는 특정 오류 메시지가 표시됩니다.

나는 많은 시나리오를 시도하고 그들은 모두 실패 :

  • 내가 PrincipalContext에 대한 해당 암호를 변경하려는 사용자의 사용자/암호를 사용하십시오.
  • PrincipalContext에 대해 다른 사용자/암호를 사용하십시오.
  • 사용자 PrincipalContext에 대한 로컬 관리 사용자/암호입니다.

아무 것도 작동하지 않습니다.

이 "새로운 동작"에 대해 많이 읽고 올바른, 잠겨 있지 않은, 비활성화 된 로컬 사용자를 변경하는 방법을 찾을 수없는 것 같습니다.

이러한 게시물은 내 것과 유사하며 일부 사용자에게는 해결 방법이 있지만 로컬 사용자 계정이 아닌 Active Directory에만있는 것처럼 보입니다.

C# Active Directory Invoke “ChangePassword” cannot contact domain

Changing Active Directory user passwords in c#/asp.net after MS patch KB3167679

c# Change AD password Directoryservices

사람이 내 코드에 문제가 있는지 말해 그것은 패치하시기 바랍니다 이후 파산 왜 나를 설명 할 수 있습니까?

+0

로컬 저장소 machinename이 machinename이 아닌 null이되어야 함을 나타 내기 때문에 새로운 PrincipalContext (ContextType.Machine, null, null, ContextOptions.Negotiate, contextUser, oldPassword)를 시도하십시오. – rene

+0

시도했지만 여전히 동일한 오류 메시지가 표시됩니다.null 또는 컴퓨터 이름을 두 번째 인수로 전달하면 동일한 동작을 수행합니다. – Doum

답변

0

로컬 사용자의 암호를 변경하려면 NetUserChangePassword을 사용해야합니다.

그래도 여전히 작동합니다. 적어도 로컬 컴퓨터의 경우 (도메인 이름 매개 변수로 그 이름을 사용하십시오).

+0

전체 관리 코드 솔루션을 찾고 있습니다. 비 관리 코드가 아닙니다. – Doum

+0

글쎄, 당신을 도울 수 없어요. 그래도 전체 관리 코드가 필요한 이유는 무엇입니까? 이것은 단지 하나의 단순한 기능이며 그것을 사용하는 위험이 없어야합니다. –

0

Microsoft는이 문서를 https://support.microsoft.com/en-us/kb/3177108으로 업데이트했습니다. 여기서 그들은 원래의 "수정 사항"에 의해 생성 된 문제와 Kerberos 및 셀프 서비스 암호 재설정 작업에 대한 몇 가지 팁을 제공했습니다.

2016 년 10 월 11 일 Microsoft는 원래 업데이트로 인한 문제를 해결하기 위해 https://technet.microsoft.com/en-us/library/security/ms16-101.aspx과 관련된 패치를 다시 릴리스했습니다 (로컬 계정에서 더 이상 암호를 변경할 수 없음을 포함하여 https://support.microsoft.com/en-us/kb/3177108을 읽을 수 있음). "알려진 이슈 # 3").

요약하면 최신 업데이트 (2016 년 10 월 11 일)로 로컬 비밀번호를 변경할 수 있습니다.