2009-06-22 4 views
1

J'utilise la fonction LogonUser (http://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx) pour authentifier les utilisateurs. Cependant, j'ai trouvé que si un utilisateur change son mot de passe (c'est-à-dire de Password1 à Password2) les deux mots de passe fonctionneront alors. Cependant, je voudrais que seul le mot de passe actuel puisse être utilisé. Y a-t-il quelque chose que je dois mettre en place pour que cela fonctionne comme ça?La fonction Windows LogonUser fonctionne avec les anciens mots de passe?

J'utilise l'extrait de code suivant:

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

nt_id va dans le format de [email protected]

et j'y ai 3 à la place de LOGON32_PROVIDER_WINNT50, parce que je obtiendrait une erreur de compilation en disant identifiant undeclaired pour LOGON32_PROVIDER_WINNT50 (cela pourrait être un symptôme?), mais je sais qu'il est défini comme 3.

Merci, -Pete

Répondre

1

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

#define _WIN32_WINNT 0x0500 

avant d'inclure windows.h ou ajouté comme un paramètre de compilation (-D_WIN32_WINNT = 0x0500).

Pourquoi LogonUser fonctionnerait à la fois avec le nouveau et l'ancien mot de passe me dépasse cependant. Mais puisque ce que vous voulez est d'authentifier les utilisateurs (par opposition à les usurper) selon MSDN, il est plus approprié d'utiliser le SSPI API (la manière recommandée).

2

Il s'agit d'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 affecte toutes les méthodes programmatiques.)

Questions connexes