이후 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
사람이 내 코드에 문제가 있는지 말해 그것은 패치하시기 바랍니다 이후 파산 왜 나를 설명 할 수 있습니까?
로컬 저장소 machinename이 machinename이 아닌 null이되어야 함을 나타 내기 때문에 새로운 PrincipalContext (ContextType.Machine, null, null, ContextOptions.Negotiate, contextUser, oldPassword)를 시도하십시오. – rene
시도했지만 여전히 동일한 오류 메시지가 표시됩니다.null 또는 컴퓨터 이름을 두 번째 인수로 전달하면 동일한 동작을 수행합니다. – Doum