Question

J'utilise la fonction LogonUser ( http: / /msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx ) pour authentifier les utilisateurs. Cependant, j'ai constaté que si un utilisateur modifiait son mot de passe (c.-à-d. De mot de passe1 à mot de passe2), les deux mots de passe fonctionneraient ensuite. Cependant, j'aimerais que seul le mot de passe actuel puisse être utilisé. Dois-je régler quelque chose pour que cela fonctionne comme ça?

J'utilise l'extrait de code suivant:

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

nt_id entre dans le format USER@USERDOMAIN.SOMETHING.COM

et j’en ai 3 à la place de LOGON32_PROVIDER_WINNT50 , car j’obtiendrais une erreur de compilation en disant un identificateur non éclairé pour LOGON32_PROVIDER_WINNT50 (cela pourrait-il être un symptôme?) mais je sais il est défini comme 3.

Merci, -Pete

Était-ce utile?

La solution

L'erreur de compilation est probablement là parce que vous n'avez pas

#define _WIN32_WINNT 0x0500

avant d'inclure windows.h ou de l'ajouter en tant que paramètre de compilation (-D_WIN32_WINNT = 0x0500).

Cependant, les raisons pour lesquelles LogonUser fonctionnerait à la fois avec l'ancien et le nouveau mot de passe me dépassent. Mais puisque vous souhaitez authentifier les utilisateurs (au lieu de les imiter) conformément à MSDN, il est plus approprié d'utiliser API SSPI ( voici la manière recommandée).

Autres conseils

Ceci est un paramètre réseau. Par défaut, les mots de passe Windows restent valides pendant une heure après leur modification. Votre administrateur réseau peut changer cela si nécessaire. (Notez que cela n'affecte pas la connexion interactive, mais cela affecte toutes les méthodes de programmation.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top