Forcer un utilisateur à modifier le mot de passe de connexion
Cet exemple de code montre comment forcer un utilisateur à modifier le mot de passe d’ouverture de session à la prochaine ouverture de session à l’aide des fonctions NetUserGetInfo et NetUserSetInfo et de la structure USER_INFO_3 . Notez qu’à partir de Windows XP, il est recommandé d’utiliser la structure USER_INFO_4 à la place.
Définissez le membre usri3_password_expired de la structure USER_INFO_3 sur une valeur différente de zéro à l’aide du fragment de code suivant :
#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#define INCL_NET
#include <stdio.h>
#include <lm.h>
#pragma comment(lib, "netapi32.lib")
#define USERNAME L"your_user_name"
#define SERVER L"\\\\server"
void main( void )
{
PUSER_INFO_3 pUsr = NULL;
NET_API_STATUS netRet = 0;
DWORD dwParmError = 0;
//
// First, retrieve the user information at level 3. This is
// necessary to prevent resetting other user information when
// the NetUserSetInfo call is made.
//
netRet = NetUserGetInfo( SERVER, USERNAME, 3, (LPBYTE *)&pUsr);
if( netRet == NERR_Success )
{
//
// The function was successful; set the usri3_password_expired value to
// a nonzero value. Call the NetUserSetInfo function.
//
pUsr->usri3_password_expired = TRUE;
netRet = NetUserSetInfo( SERVER, USERNAME, 3, (LPBYTE)pUsr, &dwParmError);
//
// A zero return indicates success.
// If the return value is ERROR_INVALID_PARAMETER,
// the dwParmError parameter will contain a value indicating the
// invalid parameter within the user_info_3 structure. These values
// are defined in the lmaccess.h file.
//
if( netRet == NERR_Success )
printf("User %S will need to change password at next logon", USERNAME);
else printf("Error %d occurred. Parm Error %d returned.\n", netRet, dwParmError);
//
// Must free the buffer returned by NetUserGetInfo.
//
NetApiBufferFree( pUsr);
}
else printf("NetUserGetInfo failed: %d\n", netRet);
}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour