Domanda

Sto usando la funzione LogonUser ( http: / /msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx ) per autenticare gli utenti. Tuttavia, ho scoperto che se un utente cambia la propria password (ovvero da Password1 a Password2), entrambe le password funzioneranno. Tuttavia, mi piacerebbe che solo la password corrente possa essere utilizzata. C'è qualcosa che devo impostare per fare in modo che funzioni così?

Sto usando il seguente frammento di codice:

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

nt_id è disponibile nel formato USER@USERDOMAIN.SOMETHING.COM

e ne ho 3 al posto di LOGON32_PROVIDER_WINNT50 , perché visualizzerei un errore di compilazione che dice identificatore non rivendicato per LOGON32_PROVIDER_WINNT50 (questo potrebbe essere un sintomo?) ma lo so è definito come 3.

Grazie, -Pete

È stato utile?

Soluzione

L'errore in fase di compilazione è probabilmente presente perché non è stato

#define _WIN32_WINNT 0x0500

prima di includere windows.h o aggiunto come impostazione in fase di compilazione (-D_WIN32_WINNT = 0x0500).

Perché LogonUser dovrebbe funzionare sia con la nuova che con la vecchia password è al di là di me. Ma poiché ciò che si desidera è autenticare gli utenti (anziché impersonarli) in base a MSDN, è più appropriato utilizzare API SSPI ( ecco il modo consigliato).

Altri suggerimenti

Questa è un'impostazione di rete. Per impostazione predefinita, le password di Windows rimangono valide per un'ora dopo la modifica. L'amministratore di rete può modificarlo se necessario. (Si noti che ciò non influisce sul login interattivo, ma influisce su tutti i metodi programmatici.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top