2009-06-22 23 views
1

Ich benutze die LogonUser-Funktion (http://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx), um Benutzer zu authentifizieren. Ich habe jedoch festgestellt, dass, wenn ein Benutzer sein Passwort ändert (dh von Passwort1 zu Passwort2) beide Passwörter funktionieren. Allerdings möchte ich es so, dass nur das aktuelle Passwort verwendet werden kann. Gibt es etwas, das ich einstellen muss, damit dies so funktioniert?Windows LogonUser Funktion arbeitet mit alten Passwörtern?

Ich verwende den folgenden Code-Schnipsel:

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

nt_id wird in das Format [email protected]

und ich habe dort 3 anstelle von LOGON32_PROVIDER_WINNT50, weil ich erhalten würde einen Compiler-Fehler sagen undeclaired Kennung für LOGON32_PROVIDER_WINNT50 (dies könnte ein Symptom sein?), aber ich weiß, dass es als 3.

Dank definiert ist, -Pete

Antwort

1

Der Fehler Compile-Zeit ist wohl da, weil Sie nicht

#define _WIN32_WINNT 0x0500 

vor einschließlich windows.h oder als Kompilierung-Einstellung hinzugefügt (-D_WIN32_WINNT = 0x0500).

Warum LogonUser sowohl mit dem neuen als auch mit dem alten Passwort arbeiten würde, ist mir ein Rätsel. Aber was Sie wollen, ist Benutzer nach MSDN zu authentifizieren (im Gegensatz zu ihnen zu imitieren), ist es angemessener, die SSPI API (here's die empfohlene Weise) zu verwenden.

2

Dies ist eine Netzwerkeinstellung. Standardmäßig bleiben Windows-Passwörter eine Stunde lang gültig, nachdem sie geändert wurden. Ihr Netzwerkadministrator kann dies bei Bedarf ändern. (Beachten Sie, dass sich dies nicht auf die interaktive Anmeldung auswirkt, sondern auf alle programmatischen Methoden.)

Verwandte Themen