次の方法で共有


GetGPOListW 関数 (userenv.h)

GetGPOList 関数は、指定したユーザーまたはコンピューターの GPO の一覧を取得します。 この関数は、2 つの方法で呼び出すことができます。1 つ目は、ユーザーまたはコンピューターのトークンを使用するか、2 つ目に、ユーザーまたはコンピューターの名前とドメイン コントローラーの名前を使用する方法です。

構文

USERENVAPI BOOL GetGPOListW(
  [in]  HANDLE                hToken,
  [in]  LPCWSTR               lpName,
  [in]  LPCWSTR               lpHostName,
  [in]  LPCWSTR               lpComputerName,
  [in]  DWORD                 dwFlags,
  [out] PGROUP_POLICY_OBJECTW *pGPOList
);

パラメーター

[in] hToken

LogonUser、CreateRestrictedToken、DuplicateTokenOpenProcessToken、または OpenThreadToken 関数から返 、ユーザーまたはコンピューターのトークン。 このトークンには、TOKEN_IMPERSONATETOKEN_QUERY アクセス権が必要です。 詳細については、「Access-Token オブジェクト のアクセス権の 」および「次の解説」セクションを参照してください。

このパラメーターが NULL場合は、lpName および lpHostName パラメーターの値を指定する必要があります。

[in] lpName

完全修飾識別名形式 ("CN=ユーザー、OU=ユーザー、DC=contoso、DC=com") のユーザーまたはコンピューター名へのポインター。

hToken パラメーターが NULLでない場合、このパラメーターは NULLする必要があります。

[in] lpHostName

DNS ドメイン名 (優先) またはドメイン コントローラー名。 ドメイン コントローラー名は、DsGetDcName 関数を使用して取得でき、フラグ パラメーターに DS_DIRECTORY_SERVICE_REQUIRED を指定します。

hToken パラメーターが NULLでない場合、このパラメーターは NULLする必要があります。

[in] lpComputerName

サイトの場所を決定するために使用するコンピューターの名前へのポインター。 名前の形式は "\\computer_name" です。 このパラメーターが NULL場合は、ローカル コンピューター名が使用されます。

[in] dwFlags

情報の取得を制御するために使用される追加のフラグを指定する値。 GPO_LIST_FLAG_MACHINEを指定すると、関数はコンピューターのポリシー情報を取得します。 GPO_LIST_FLAG_MACHINEを指定しない場合、関数はユーザーのポリシー情報を取得します。

GPO_LIST_FLAG_SITEONLY 指定すると、関数はコンピューターまたはユーザーのサイト情報のみを返します。

[out] pGPOList

GPO 構造体の一覧を受け取るポインター。 詳細については、GROUP_POLICY_OBJECTを参照してください。

戻り値

関数が成功した場合、戻り値は 0 以外です。

関数が失敗した場合、戻り値は 0 です。 拡張エラー情報を取得するには、GetLastError呼び出します。

備考

GetGPOList 関数は、ユーザーまたはコンピューターに代わって動作するサービスで使用することを目的としています。 サービスはこの関数を呼び出して GPO の一覧を取得し、各 GPO でサービス固有のポリシーを確認します。

トークンを使用してこの関数を呼び出すと、最も正確なリストが提供されます。 システムは、ユーザーまたはコンピューターのアクセス チェックを実行できます。 ユーザーまたはコンピューター名とドメイン コントローラー名を使用してこの関数を呼び出す方が、トークンを使用して呼び出すよりも高速です。 ただし、トークンが指定されていない場合、システムは呼び出し元のセキュリティ アクセスを使用します。つまり、目的のユーザーまたはコンピューターのリストが完全に正しくない可能性があります。

GetGPOList呼び出すときにコンピューターの GPO の最も正確な一覧を取得するには、呼び出し元がコンピューター ドメイン内の各 OU とサイトに対する読み取りアクセス権を持ち、そのドメインのサイト、ドメイン、または OU にリンクされているすべての GPO に対するグループ ポリシー アクセスを読み取って適用する必要があります。 呼び出し元の例としては、lpName パラメーターに名前が指定されているコンピューターで実行されているサービスがあります。 GPO の一覧を取得する別の方法は、RsopPlanningModeProvider WMI クラスの RsopCreateSession メソッドを呼び出す方法です。 このメソッドは、仮定のシナリオで、コンピューターまたはユーザー アカウントの結果のポリシー データを生成できます。

FreeGPOList 関数を呼び出して、GPO リストの処理が完了したら解放します。

一般に、次のコード例に示すように、ユーザー GPO の一覧を取得するときにトークンを使用して GetGPOList を呼び出す必要があります。

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);
      }

通常、コンピューターの GPO の一覧を取得するには、次のコード スニペットに示すように、コンピューター名とドメイン コントローラー名 GetGPOList を呼び出すことができます。

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);
      }

特定のユーザーまたはコンピューターと拡張機能に適用されている GPO の一覧を取得するには、GetAppliedGPOList 関数を呼び出します。

手記

userenv.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetGPOList を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista
サポートされる最小サーバー Windows Server 2008
ターゲット プラットフォーム の ウィンドウズ
ヘッダー userenv.h
ライブラリ Userenv.lib
DLL Userenv.dll

関連項目

DsGetDcName

FreeGPOList を する

GROUP_POLICY_OBJECT

グループ ポリシー関数の

グループ ポリシーの概要