PFNPROCESSGROUPPOLICY
コールバックシグネチャ
DWORD PFNPROCESSGROUPPOLICY(
DWORD dwFlags,
HANDLE hToken,
HKEY hKeyRoot,
GROUP_POLICY_OBJECTA* pDeletedGPOList,
GROUP_POLICY_OBJECTA* pChangedGPOList,
UINT_PTR pHandle,
BOOL* pbAbort,
PFNSTATUSMESSAGECALLBACK pStatusCallback
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| dwFlags | DWORD | このパラメーターには、次のフラグを 1 つ以上指定できます。 GPO_INFO_FLAG_MACHINEユーザーポリシーではなく、コンピューターポリシーを適用します。 GPO_INFO_FLAG_BACKGROUNDポリシーのバックグラウンド更新を実行します。 GPO_INFO_FLAG_ASYNC_FOREGROUNDポリシーの非同期フォアグラウンド更新を実行します。フォアグラウンドでのポリシー適用について詳しくは、 グループポリシーの初期処理を参照してください。 GPO_INFO_FLAG_SLOWLINKポリシーが低速リンク経由で適用されています。 GPO_INFO_FLAG_VERBOSE詳細な出力をイベントログに書き込みます。 GPO_INFO_FLAG_NOCHANGESGPO への変更は検出されませんでした。 GPO_INFO_FLAG_LINKTRANSITIONポリシーの適用と適用の間にリンク速度の変化が検出されました。 GPO_INFO_FLAG_LOGRSOP_TRANSITION前回のポリシー適用から今回のポリシー適用までの間に、RSoP ログ記録の変化が検出されました。 GPO_INFO_FLAG_FORCED_REFRESH強制的なポリシー更新が適用されています。 GPO_INFO_FLAG_SAFEMODE_BOOTセーフモードを示すフラグです。 |
| hToken | HANDLE | ユーザーまたはコンピューターのトークンで、 LogonUser、 CreateRestrictedToken、 DuplicateToken、 OpenProcessToken、または OpenThreadToken 関数から返されたものです。このトークンには TOKEN_IMPERSONATE および TOKEN_QUERY のアクセス権が必要です。詳しくは、 アクセストークンオブジェクトのアクセス権および クライアントの偽装を参照してください。 |
| hKeyRoot | HKEY | HKEY_LOCAL_MACHINE または HKEY_CURRENT_USER レジストリキーへのハンドルです。 |
| pDeletedGPOList | GROUP_POLICY_OBJECTA* | 削除された GPO 構造体のリストを受け取るポインターです。詳しくは、 GROUP_POLICY_OBJECT を参照してください。 |
| pChangedGPOList | GROUP_POLICY_OBJECTA* | 変更された GPO 構造体のリストを受け取るポインターです。詳しくは、 GROUP_POLICY_OBJECT を参照してください。 |
| pHandle | UINT_PTR | 非同期完了ハンドルです。コールバック関数が非同期処理をサポートしていない場合、このハンドルは 0 になります。 |
| pbAbort | BOOL* | GPO の処理を続行するかどうかを指定します。このパラメーターが TRUE の場合、GPO の処理は中止されます。このパラメーターが FALSE の場合、GPO の処理は続行されます。 |
| pStatusCallback | PFNSTATUSMESSAGECALLBACK | 状態メッセージを表示する StatusMessageCallback コールバック関数へのポインターです。このパラメーターは、場合によっては NULL になることがあります。たとえば、システムがバックグラウンドでポリシーを適用している場合は、状態表示のユーザーインターフェイスが存在しないため、アプリケーションは表示する状態メッセージを送信できません。詳しくは、後述の「解説」セクションを参照してください。 |
公式ドキュメント
ProcessGroupPolicy 関数は、ポリシーの適用時に使用されるアプリケーション定義のコールバック関数です。PFNPROCESSGROUPPOLICY 型は、このコールバック関数へのポインターを定義します。 ProcessGroupPolicy は、アプリケーション定義の関数名のプレースホルダーです。
このコールバック関数は、ポリシーの結果セット (RSoP) の処理には利用できません。代わりに ProcessGroupPolicyEx コールバック関数を使用してください。
戻り値
ポリシーが正常に適用された場合は ERROR_SUCCESS を返します。GPO の一覧に変更がなく、拡張機能を再度呼び出す必要がある場合は ERROR_OVERRIDE_NOCHANGES を返します。ERROR_OVERRIDE_NOCHANGES を返すと、NoGPOListChanges レジストリ値が設定されている場合でも、拡張機能が必ず再度呼び出されます。(このレジストリ値について詳しくは、解説を参照してください。) それ以外の場合は、 システムエラーコードを返します。
解説(Remarks)
詳しくは、 グループポリシーのクライアント側拡張機能の実装を参照してください。
システムは、ローカルコンピューター上で広範な特権を持つ LocalSystem アカウントのコンテキストでこの関数を呼び出します。ネットワークリソースを使用するには、hToken パラメーターで渡されたトークンを使用して、ユーザーまたはコンピューターを偽装する必要があります。
このコールバック関数を登録するには、次のレジストリキーの下にサブキーを作成します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions\ClientExtensionGuid
サブキーは一意になるように GUID にする必要があります。また、サブキーには次の値を格納します。
状態メッセージを更新するのは、ポリシーを同期的に適用している場合だけにしてください。これにより、時間のかかるポリシー適用中にフィードバックと診断情報を提供できます。状態メッセージのコールバック関数を使用するには、pStatusCallback が NULL でないことを確認する必要があります。その後、メッセージ文字列リソースを読み込みます。状態関数を呼び出すときは、その文字列が詳細 (verbose) なものかどうかを指定する必要があります。文字列が詳細なものである場合、コールバック関数はコンピューターが詳細モードであることを確認したうえでメッセージを表示します。詳しくは、 StatusMessageCallback を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)