Partager via


GetGPOListA, fonction (userenv.h)

La fonction GetGPOList récupère la liste des objets de stratégie de groupe pour l’utilisateur ou l’ordinateur spécifié. Cette fonction peut être appelée de deux façons : tout d’abord, vous pouvez utiliser le jeton pour l’utilisateur ou l’ordinateur, ou, deuxièmement, vous pouvez utiliser le nom de l’utilisateur ou de l’ordinateur et le nom du contrôleur de domaine.

Syntaxe

USERENVAPI BOOL GetGPOListA(
  [in]  HANDLE                hToken,
  [in]  LPCSTR                lpName,
  [in]  LPCSTR                lpHostName,
  [in]  LPCSTR                lpComputerName,
  [in]  DWORD                 dwFlags,
  [out] PGROUP_POLICY_OBJECTA *pGPOList
);

Paramètres

[in] hToken

Jeton pour l’utilisateur ou l’ordinateur, retourné à partir duLogonUser , CreateRestrictedToken, DuplicateToken, OpenProcessTokenou Fonction OpenThreadToken. Ce jeton doit avoir un accès TOKEN_IMPERSONATE et TOKEN_QUERY. Pour plus d’informations, consultez Droits d’accès pour les objets Access-Token et la section Remarques suivantes.

Si ce paramètre est NULL, vous devez fournir des valeurs pour les paramètres lpName et lpHostName.

[in] lpName

Pointeur vers le nom de l’utilisateur ou de l’ordinateur, au format de nom unique complet (par exemple, « CN=utilisateur , OU =utilisateurs, DC=contoso, DC=com»).

Si le paramètre hToken n’est pas NULL, ce paramètre doit être NULL.

[in] lpHostName

Nom de domaine DNS (préféré) ou nom de contrôleur de domaine. Le nom du contrôleur de domaine peut être récupéré à l’aide de la fonction DsGetDcName , en spécifiant DS_DIRECTORY_SERVICE_REQUIRED dans les indicateurs de paramètre.

Si le paramètre hToken n’est pas NULL, ce paramètre doit être NULL.

[in] lpComputerName

Pointeur vers le nom de l’ordinateur utilisé pour déterminer l’emplacement du site. Le format du nom est « \\computer_name». Si ce paramètre est NULL, le nom de l’ordinateur local est utilisé.

[in] dwFlags

Valeur qui spécifie des indicateurs supplémentaires utilisés pour contrôler la récupération des informations. Si vous spécifiez GPO_LIST_FLAG_MACHINE, la fonction récupère les informations de stratégie de l’ordinateur. Si vous ne spécifiez pas GPO_LIST_FLAG_MACHINE, la fonction récupère les informations de stratégie pour l’utilisateur.

Si vous spécifiez GPO_LIST_FLAG_SITEONLY la fonction retourne uniquement des informations de site pour l’ordinateur ou l’utilisateur.

[out] pGPOList

Pointeur qui reçoit la liste des structures d’objets de stratégie de groupe. Pour plus d’informations, consultez GROUP_POLICY_OBJECT.

Valeur de retour

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations d’erreur étendues, appelez GetLastError.

Remarques

La fonction GetGPOList est destinée à être utilisée par des services agissant au nom d’un utilisateur ou d’un ordinateur. Le service appelle cette fonction pour obtenir une liste d’objets de stratégie de groupe, puis vérifie chaque objet de stratégie de groupe pour la stratégie spécifique au service.

L’appel de cette fonction avec un jeton fournit la liste la plus précise. Le système peut effectuer la vérification d’accès pour l’utilisateur ou l’ordinateur. L’appel de cette fonction avec le nom d’utilisateur ou d’ordinateur et le nom du contrôleur de domaine est plus rapide que de l’appeler avec un jeton. Toutefois, si le jeton n’est pas spécifié, le système utilise l’accès de sécurité de l’appelant, ce qui signifie que la liste peut ne pas être complètement correcte pour l’utilisateur ou l’ordinateur prévu.

Pour obtenir la liste la plus précise des objets de stratégie de groupe pour un ordinateur lors de l’appel de GetGPOList, l’appelant doit disposer d’un accès en lecture à chaque unité d’organisation et site dans le domaine de l’ordinateur, et également lire et appliquer l’accès aux stratégies de groupe à tous les objets de stratégie de groupe liés aux sites, au domaine ou aux unités d’organisation de ce domaine. Un exemple d’appelant serait un service s’exécutant sur l’ordinateur dont le nom est spécifié dans le paramètre lpName. Une autre méthode d’obtention d’une liste d’objets de stratégie de groupe consiste à appeler la méthode RsopCreateSession de la RsopPlanningModeProvider classe WMI. La méthode peut générer des données de stratégie résultantes pour un ordinateur ou un compte d’utilisateur dans un scénario hypothétique.

Appelez la fonction FreeGPOList pour libérer la liste des objets de stratégie de groupe lorsque vous avez terminé de le traiter.

En règle générale, vous devez appeler GetGPOList avec un jeton lors de la récupération d’une liste d’objets de stratégie de groupe pour un utilisateur, comme indiqué dans l’exemple de code suivant.

LPGROUP_POLICY_OBJECT  pGPOList;
      if (GetGPOList (hToken, NULL, NULL, NULL, 0, &pGPOList))
      {
//        Perform processing here. 
//
//        Free the GPO list when you finish processing.
          FreeGPOList (pGPOList);
      }

En règle générale, pour récupérer une liste d’objets de stratégie de groupe pour un ordinateur, vous pouvez appeler GetGPOList avec le nom de l’ordinateur et le nom du contrôleur de domaine, comme illustré dans l’extrait de code suivant.

LPGROUP_POLICY_OBJECT  pGPOList;
      if (GetGPOList (NULL, lpMachineName, lpHostName, lpMachineName, GPO_LIST_FLAG_MACHINE, &pGPOList))
      {
//        Perform processing here. 
//
//        Free the GPO list when you finish processing.
          FreeGPOList (pGPOList);
      }

Pour récupérer la liste des objets de stratégie de groupe appliqués à un utilisateur ou un ordinateur et une extension spécifiques, appelez la fonction GetAppliedGPOList.

Note

L’en-tête userenv.h définit GetGPOList comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows Vista
serveur minimum pris en charge Windows Server 2008
plateforme cible Windows
d’en-tête userenv.h
bibliothèque Userenv.lib
DLL Userenv.dll

Voir aussi

DsGetDcName

FreeGPOList

GROUP_POLICY_OBJECT

fonctions de stratégie de groupe

Vue d’ensemble de la stratégie de groupe