문제

Logonuser 기능을 사용하고 있습니다 (http://msdn.microsoft.com/en-us/library/aa378184(vs.85).aspx) 사용자를 인증합니다. 그러나 사용자가 암호를 변경하면 (즉, Password1에서 Password2로) 두 가지 암호가 모두 작동한다는 것을 알았습니다. 그러나 현재 비밀번호 만 사용할 수 있도록 원합니다. 이런 일을하기 위해 설정해야 할 것이 있습니까?

다음 코드 스 니펫을 사용하고 있습니다.

LogonUser(nt_id, NULL, nt_password, LOGON32_LOGON_NETWORK, 3, &hToken );

NT_ID는 user@userdomain.something.com의 형식으로 진행됩니다

그리고 나는 대신에 3이 있습니다 LOGON32_PROVIDER_WINNT50, 노출되지 않은 식별자라는 컴파일 오류가 발생하기 때문에 LOGON32_PROVIDER_WINNT50 (이것이 증상 일 수 있습니까?) 그러나 나는 그것이 3으로 정의되어 있음을 알고 있습니다.

감사합니다

도움이 되었습니까?

해결책

컴파일 타임 오류는 아마도 당신이하지 않았기 때문에 아마있을 것입니다

#define _WIN32_WINNT 0x0500

Windows.h를 포함 시키거나 컴파일 타임 설정으로 추가하기 전에 (-d_win32_winnt = 0x0500).

Logonuser가 새로운 새로운 암호와 이전 암호와 함께 작동하는 이유는 저를 넘어선 것입니다. 그러나 당신이 원하는 것은 MSDN에 따라 사용자를 인증하는 것이기 때문에 SSPI API (여기에 있습니다 권장 방법).

다른 팁

이것은 네트워크 설정입니다. 기본적으로 Windows 암호는 변경 후 1 시간 동안 유효합니다. 네트워크 관리자가 필요한 경우이를 변경할 수 있습니다. (이것은 대화식 로그인에 영향을 미치지 않지만 모든 프로그래밍 방식에 영향을 미칩니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top