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 |
---|---|
|
Spécifie les paramètres de mot de passe globaux. Le paramètre buf pointe vers une structure USER_MODALS_INFO_0 . |
|
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 . |
|
Spécifie le nom de domaine et l’identificateur. Le paramètre buf pointe vers une structure USER_MODALS_INFO_2 . |
|
Spécifie les informations de verrouillage. Le paramètre buf pointe vers une structure USER_MODALS_INFO_3 . |
|
Spécifie la longueur minimale autorisée du mot de passe. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1001 . |
|
Spécifie l’âge maximal autorisé du mot de passe. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1002 . |
|
Spécifie l’âge minimal autorisé du mot de passe. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1003 . |
|
Spécifie les informations de déconnexion forcée. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1004 . |
|
Spécifie la longueur de l’historique des mots de passe. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1005 . |
|
Spécifie le rôle du serveur d’ouverture de session. Le paramètre buf pointe vers une structure USER_MODALS_INFO_1006 . |
|
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 |
---|---|
|
L’utilisateur n’a pas accès aux informations demandées. |
|
Le paramètre spécifié n’est pas valide. Pour plus d'informations, consultez la section Notes qui suit. |
|
Le nom d'ordinateur est non valide. |
|
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 |