NetUserModalsGet, fonction (lmaccess.h)

La fonction NetUserModalsGet récupère 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 NetUserModalsGet(
  [in, optional] LPCWSTR servername,
  [in]           DWORD   level,
  [out]          LPBYTE  *bufptr
);

Paramètres

[in, optional] 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é. Pour plus d'informations, consultez la section Notes qui suit.

[in] level

Niveau d’informations des données demandées. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
0
Retourne les paramètres de mot de passe globaux. Le paramètre bufptr pointe vers une structure USER_MODALS_INFO_0 .
1
Retourne les informations sur le serveur d’ouverture de session et le contrôleur de domaine. Le paramètre bufptr pointe vers une structure USER_MODALS_INFO_1 .
2
Retournez le nom de domaine et l’identificateur. Le paramètre bufptr pointe vers une structure USER_MODALS_INFO_2 . Pour plus d'informations, consultez la section Notes qui suit.
3
Retournez les informations de verrouillage. Le paramètre bufptr pointe vers une structure USER_MODALS_INFO_3 .
 

Une session null peut appeler NetUserModalsGet de manière anonyme aux niveaux d’informations 0 et 3.

[out] bufptr

Pointeur vers la mémoire tampon qui reçoit les données. Le format de ces données dépend de la valeur du paramètre de niveau .

La mémoire tampon de ces données est allouée par le système et l’application doit appeler la fonction NetApiBufferFree pour libérer la mémoire allouée lorsque les données retournées ne sont plus nécessaires. Pour plus d’informations, consultez Mémoires tampons de fonction de gestionréseau et Longueurs de mémoire tampon des fonctions de gestion réseau.

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_BAD_NETPATH
Le chemin d’accès réseau est introuvable. Cette erreur est retournée si le paramètre servername est introuvable.
ERROR_INVALID_LEVEL
Le niveau d’appel système est incorrect. Cette erreur est retournée si le paramètre de niveau n’est pas l’une des valeurs prises en charge.
ERROR_INVALID_NAME
Le nom de fichier, le nom du répertoire ou la syntaxe d’étiquette de volume est incorrect. Cette erreur est retournée si la syntaxe du paramètre servername est incorrecte.
ERROR_WRONG_TARGET_NAME
Le nom de compte cible est incorrect. Cette erreur est retournée en cas d’échec d’ouverture de session à un paramètre de nom de serveur distant s’exécutant sur Windows Vista.
NERR_InvalidComputer
Le nom d'ordinateur est non valide.

Notes

Si vous programmez pour Active Directory, vous pourrez 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) de l’objet sécurisable. La liste de contrôle d’accès par défaut permet à tous les utilisateurs authentifiés et aux membres du groupe « Accès compatible pré-Windows 2000 » d’afficher les informations. Si vous appelez cette fonction sur un serveur membre ou une station de travail, tous les utilisateurs authentifiés peuvent afficher les informations. Pour plus d’informations sur l’accès anonyme et la restriction de l’accès anonyme sur ces plateformes, consultez Exigences de sécurité pour les fonctions de gestion réseau. Pour plus d’informations sur les listes de contrôle d’accès, les ACL et les jetons d’accès, consultez Access Control Modèle.

Le descripteur de sécurité de l’objet Domain est utilisé pour effectuer l’case activée d’accès pour cette fonction.

Pour récupérer l’identificateur de sécurité (SID) du domaine auquel appartient l’ordinateur, appelez la fonction NetUserModalsGet en spécifiant une structure USER_MODALS_INFO_2 et NULL dans le paramètre servername . Si l’ordinateur n’est pas membre d’un domaine, la fonction retourne un pointeur NULL .

Exemples

L’exemple de code suivant montre comment récupérer des informations globales pour tous les utilisateurs et groupes globaux avec un appel à la fonction NetUserModalsGet . L’exemple appelle NetUserModalsGet, en spécifiant le niveau d’informations 0 (USER_MODALS_INFO_0). Si l’appel réussit, l’exemple affiche les informations de mot de passe globaux. Enfin, l’exemple de code libère la mémoire allouée pour la mémoire tampon d’informations.

#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 *pBuf = NULL;
   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];
   //
   // Call the NetUserModalsGet function; specify level 0.
   //
   nStatus = NetUserModalsGet((LPCWSTR) pszServerName,
                              dwLevel,
                              (LPBYTE *)&pBuf);
   //
   // If the call succeeds, print the global information.
   //
   if (nStatus == NERR_Success)
   {
      if (pBuf != NULL)
      {
         printf("\tMinimum password length:  %d\n", pBuf->usrmod0_min_passwd_len);
         printf("\tMaximum password age (d): %d\n", pBuf->usrmod0_max_passwd_age/86400);
         printf("\tMinimum password age (d): %d\n", pBuf->usrmod0_min_passwd_age/86400);
         printf("\tForced log off time (s):  %d\n", pBuf->usrmod0_force_logoff);
         printf("\tPassword history length:  %d\n", pBuf->usrmod0_password_hist_len);
      }
   }
   // Otherwise, print the system error.
   //
   else
      fprintf(stderr, "A system error has occurred: %d\n", nStatus);
   //
   // Free the allocated memory.
   //
   if (pBuf != NULL)
      NetApiBufferFree(pBuf);

   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

NetUserModalsSet

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_2

USER_MODALS_INFO_3

Fonctions modales utilisateur