NetUserModalsSet, fonction (lmaccess.h)

La fonction NetUserModalsSet définit des informations globales pour tous les utilisateurs et groupes globaux dans la base de données de sécurité, qui est la base de données du gestionnaire de comptes de sécurité (SAM) ou, dans le cas des contrôleurs de domaine, Active Directory.

Syntaxe

NET_API_STATUS NET_API_FUNCTION NetUserModalsSet(
  [in]  LPCWSTR servername,
  [in]  DWORD   level,
  [in]  LPBYTE  buf,
  [out] LPDWORD parm_err
);

Paramètres

[in] servername

Pointeur vers une chaîne constante qui spécifie le nom DNS ou NetBIOS du serveur distant sur lequel la fonction doit s’exécuter. Si ce paramètre a la valeur NULL, l’ordinateur local est utilisé.

[in] level

Spécifie le niveau d’informations des données. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
0
Spécifie les paramètres de mot de passe globaux. Le paramètre buf pointe vers une structure USER_MODALS_INFO_0 .
1
Spécifie les informations du serveur d’ouverture de session et du contrôleur de domaine. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1 .
2
Spécifie le nom de domaine et l’identificateur. Le paramètre buf pointe vers une structure USER_MODALS_INFO_2 .
3
Spécifie les informations de verrouillage. Le paramètre buf pointe vers une structure USER_MODALS_INFO_3 .
1001
Spécifie la longueur minimale autorisée du mot de passe. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1001 .
1002
Spécifie l’âge maximal autorisé du mot de passe. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1002 .
1003
Spécifie l’âge minimal autorisé du mot de passe. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1003 .
1004
Spécifie les informations de déconnexion forcée. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1004 .
1005
Spécifie la longueur de l’historique des mots de passe. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1005 .
1006
Spécifie le rôle du serveur d’ouverture de session. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1006 .
1007
Spécifie les informations du contrôleur de domaine. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1007 .

[in] buf

Pointeur vers la mémoire tampon qui spécifie les données. Le format de ces données dépend de la valeur du paramètre level . Pour plus d’informations, consultez Mémoires tampons de fonction de gestion réseau.

[out] parm_err

Pointeur vers une valeur qui reçoit l’index du premier membre de la structure d’informations qui provoque ERROR_INVALID_PARAMETER. Si ce paramètre a la valeur NULL, l’index n’est pas retourné en cas d’erreur. Pour plus d'informations, consultez la section Notes qui suit.

Valeur retournée

Si la fonction réussit, la valeur de retour est NERR_Success.

Si la fonction échoue, la valeur de retour peut être l’un des codes d’erreur suivants.

Code de retour Description
ERROR_ACCESS_DENIED
L’utilisateur n’a pas accès aux informations demandées.
ERROR_INVALID_PARAMETER
Le paramètre spécifié n’est pas valide. Pour plus d'informations, consultez la section Notes qui suit.
NERR_InvalidComputer
Le nom d'ordinateur est non valide.
NERR_UserNotFound
Le nom d’utilisateur est introuvable.

Notes

Si vous programmez pour Active Directory, vous pouvez peut-être appeler certaines méthodes ADSI (Active Directory Service Interface) pour obtenir les mêmes fonctionnalités que celles que vous pouvez obtenir en appelant les fonctions modales utilisateur de gestion réseau. Pour plus d’informations, consultez IADsDomain.

Si vous appelez cette fonction sur un contrôleur de domaine qui exécute Active Directory, l’accès est autorisé ou refusé en fonction de la liste de contrôle d’accès (ACL) pour l’objet sécurisable. La liste de contrôle d’accès par défaut autorise uniquement les administrateurs de domaine et les opérateurs de compte à appeler cette fonction. Sur un serveur ou une station de travail membre, seuls les administrateurs et les utilisateurs avec pouvoir peuvent appeler cette fonction. Pour plus d’informations, consultez Exigences de sécurité pour les fonctions de gestion réseau. Pour plus d’informations sur les ACL, les ACL et les jetons d’accès, consultez modèle Access Control.

Le descripteur de sécurité de l’objet Domain est utilisé pour effectuer l’case activée d’accès pour cette fonction. En règle générale, les appelants doivent avoir un accès en écriture à l’objet entier pour que les appels à cette fonction réussissent.

Si la fonction NetUserModalsSet retourne ERROR_INVALID_PARAMETER, vous pouvez utiliser le paramètre parm_err pour indiquer le premier membre de la structure d’informations non valide. (La structure d’informations commence par USER_MODALS_INFO_ et son format est spécifié par le paramètre level .) Le tableau suivant répertorie les valeurs qui peuvent être retournées dans le paramètre parm_err et le membre de structure correspondant qui est en erreur. (Le préfixe usrmod*_ indique que le membre peut commencer par plusieurs préfixes, par exemple usrmod2_ ou usrmod1002_.)

Valeur Membre
MODALS_MIN_PASSWD_LEN_PARMNUM usrmod*_min_passwd_len
MODALS_MAX_PASSWD_AGE_PARMNUM usrmod*_max_passwd_age
MODALS_MIN_PASSWD_AGE_PARMNUM usrmod*_min_passwd_age
MODALS_FORCE_LOGOFF_PARMNUM usrmod*_force_logoff
MODALS_PASSWD_HIST_LEN_PARMNUM usrmod*_password_hist_len
MODALS_ROLE_PARMNUM usrmod*_role
MODALS_PRIMARY_PARMNUM usrmod*_primary
MODALS_DOMAIN_NAME_PARMNUM usrmod*_domain_name
MODALS_DOMAIN_ID_PARMNUM usrmod*_domain_id
MODALS_LOCKOUT_DURATION_PARMNUM usrmod*_lockout_duration
MODALS_LOCKOUT_OBSERVATION_WINDOW_PARMNUM usrmod*_lockout_observation_window
MODALS_LOCKOUT_THRESHOLD_PARMNUM usrmod*_lockout_threshold
 

Exemples

L’exemple de code suivant montre comment définir les informations globales pour tous les utilisateurs et groupes globaux avec un appel à la fonction NetUserModalsSet . L’exemple remplit les membres de la structure USER_MODALS_INFO_0 et appelle NetUserModalsSet, en spécifiant le niveau d’informations 0.

#ifndef UNICODE
#define UNICODE
#endif
#pragma comment(lib, "netapi32.lib")

#include <stdio.h>
#include <windows.h> 
#include <lm.h>

int wmain(int argc, wchar_t *argv[])
{
   DWORD dwLevel = 0;
   USER_MODALS_INFO_0 ui;
   NET_API_STATUS nStatus;
   LPTSTR pszServerName = NULL;

   if (argc > 2)
   {
      fwprintf(stderr, L"Usage: %s [\\\\ServerName]\n", argv[0]);
      exit(1);
   }
   // The server is not the default local computer.
   //
   if (argc == 2)
      pszServerName = (LPTSTR) argv[1];
   //
   // Fill in the USER_MODALS_INFO_0 structure.
   //
   ui.usrmod0_min_passwd_len = 0;
   ui.usrmod0_max_passwd_age = (86400 * 30);
   ui.usrmod0_min_passwd_age = 0;
   ui.usrmod0_force_logoff = TIMEQ_FOREVER; // never force logoff
   ui.usrmod0_password_hist_len = 0;
   //
   // Call the NetUserModalsSet function; specify level 0.
   //
   nStatus = NetUserModalsSet((LPCWSTR) pszServerName,
                              dwLevel,
                              (LPBYTE)&ui,
                              NULL);
   //
   // If the call succeeds, inform the user.
   //
   if (nStatus == NERR_Success)
      fwprintf(stderr, L"Modals information set successfully on %s\n", argv[1]);
   //
   // Otherwise, print the system error.
   //
   else
      fprintf(stderr, "A system error has occurred: %d\n", nStatus);

   return 0;
}

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête lmaccess.h (include Lm.h)
Bibliothèque Netapi32.lib
DLL Netapi32.dll

Voir aussi

NetUserModalsGet

Fonctions de gestion réseau

Vue d’ensemble de la gestion du réseau

USER_MODALS_INFO_0

USER_MODALS_INFO_1

USER_MODALS_INFO_1001

USER_MODALS_INFO_1002

USER_MODALS_INFO_1003

USER_MODALS_INFO_1004

USER_MODALS_INFO_1005

USER_MODALS_INFO_1006

USER_MODALS_INFO_1007

USER_MODALS_INFO_2

USER_MODALS_INFO_3

Fonctions modales utilisateur