Pergunta

Eu estou usando a função LogonUser ( http: / /msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx ) para autenticar os usuários. No entanto eu descobri que, se um usuário alterar sua senha (ou seja, de Password1 para Password2) ambas as senhas irá trabalhar. No entanto, gostaria que de modo que apenas a senha atual pode ser usado. Existe algo que eu preciso definir de chegar a este trabalho como esse?

Eu estou usando o seguinte trecho de código:

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

nt_id vai em no formato de USER@USERDOMAIN.SOMETHING.COM

e eu tenho 3 lá no lugar de LOGON32_PROVIDER_WINNT50, porque eu iria receber um erro de compilação dizendo identificador undeclaired para LOGON32_PROVIDER_WINNT50 (isso pode ser um sintoma?), Mas eu sei que é definido como 3.

Obrigado, -Pete

Foi útil?

Solução

O erro de tempo de compilação é provavelmente lá porque você tem não

#define _WIN32_WINNT 0x0500

antes incluindo windows.h ou adicionado como um ajuste de tempo de compilação (-D_WIN32_WINNT = 0x0500).

Por LogonUser iria trabalhar tanto com o novo e a senha antiga está além de mim embora. Mas desde que você quer é para autenticar os usuários (em oposição a representar-los) de acordo com MSDN é mais apropriado usar o SSPI API ( aqui está a maneira recomendada).

Outras dicas

Esta é uma configuração de rede. Por padrão, as senhas do Windows permanecerá válido por uma hora depois que eles são alterados. Seu administrador de rede pode mudar este se necessário. (Note que isso não afeta o login interativo, mas afeta todos os métodos programáticos.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top