PFNPROCESSGROUPPOLICYEX
コールバックシグネチャ
DWORD PFNPROCESSGROUPPOLICYEX(
DWORD dwFlags,
HANDLE hToken,
HKEY hKeyRoot,
GROUP_POLICY_OBJECTA* pDeletedGPOList,
GROUP_POLICY_OBJECTA* pChangedGPOList,
UINT_PTR pHandle,
BOOL* pbAbort,
PFNSTATUSMESSAGECALLBACK pStatusCallback,
IWbemServices* pWbemServices,
HRESULT* pRsopStatus
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| dwFlags | DWORD | このパラメーターには、次のフラグのうち 1 つ以上を指定できます。 GPO_INFO_FLAG_MACHINEユーザー ポリシーではなく、コンピューター ポリシーを適用します。 GPO_INFO_FLAG_BACKGROUNDポリシーのバックグラウンド更新を実行します。詳細については、このリストの後に続く説明を参照してください。 GPO_INFO_FLAG_ASYNC_FOREGROUNDポリシーの非同期フォアグラウンド更新を実行します。詳細については、このリストの後に続く説明を参照してください。フォアグラウンドでのポリシー適用の詳細については、Initial Processing of Group Policy を参照してください。 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セーフ モード フラグです。 GPO_INFO_FLAG_BACKGROUND フラグと GPO_INFO_FLAG_ASYNC_FOREGROUND フラグは、両方を同時に設定できます。バックグラウンド更新ではポリシーが常に非同期に適用されるため、ほとんどの拡張機能は非同期フォアグラウンド更新をバックグラウンド更新と同じ方法で処理します。そのため、GPO_INFO_FLAG_ASYNC_FOREGROUND フラグを確認する必要はありません。拡張機能がポリシーのバックグラウンド更新と非同期フォアグラウンド更新を区別する必要がある場合は、GPO_INFO_FLAG_ASYNC_FOREGROUND フラグを確認できます。 |
| hToken | HANDLE | LogonUser、CreateRestrictedToken、DuplicateToken、OpenProcessToken、または OpenThreadToken 関数から返された、ユーザーまたはコンピューターのトークンです。このトークンには TOKEN_IMPERSONATE アクセス権と TOKEN_QUERY アクセス権が必要です。詳細については、Access Rights for Access-Token Objects および Client Impersonation を参照してください。 |
| 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 になることがあります。たとえば、システムがバックグラウンドでポリシーを適用している場合は、状態表示用のユーザー インターフェイスが存在しないため、アプリケーションは表示する状態メッセージを送信できません。詳細については、後続の「解説」セクションを参照してください。 |
| pWbemServices | IWbemServices* | ポリシー データの書き込み先となる RSoP 名前空間への WMI サービス ポインターを指定します。RSoP のログ記録が無効な場合、このパラメーターは NULL になり、拡張機能が RSoP データをログに記録すべきでないことを示します。 |
| pRsopStatus | HRESULT* | RSoP のログ記録が成功したかどうかを示す HRESULT の戻りコードへのポインターです。 |
公式ドキュメント
ProcessGroupPolicyEx 関数は、ポリシーの適用時に使用されるアプリケーション定義のコールバック関数です。この拡張された関数は、ポリシーの結果セット (RSoP) データのログ記録もサポートします。PFNPROCESSGROUPPOLICYEX 型は、このコールバック関数へのポインターを定義します。ProcessGroupPolicyEx は、アプリケーション定義の関数名のプレースホルダーです。
戻り値
ポリシーが正常に適用された場合は ERROR_SUCCESS を返します。GPO リストに変更がなく、拡張機能を再度呼び出す必要がある場合は ERROR_OVERRIDE_NOCHANGES を返します。ERROR_OVERRIDE_NOCHANGES を返すと、NoGPOListChanges レジストリ値が設定されている場合でも、拡張機能が再度呼び出されるようになります (このレジストリ値の詳細については、「解説」を参照してください)。
ポリシーの非同期フォアグラウンド更新のためにこの関数が呼び出されたものの、その非同期更新中にポリシーを適用できなかった場合は、ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED を返します。ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED を返すことは、ポリシーの同期フォアグラウンド更新のためにこの関数を再度呼び出す必要があることを示します。
それ以外の場合は、システム エラー コード を返します。
解説(Remarks)
詳細については、Implementing a Group Policy Client-side Extension を参照してください。
システムは、ローカル コンピューター上で広範な特権を持つ LocalSystem アカウント のコンテキストでこの関数を呼び出します。ネットワーク リソースを使用するには、hToken パラメーターで渡されたトークンを使用して、ユーザーまたはコンピューターを偽装する必要があります。
このコールバック関数を登録するには、次のレジストリ キーの下にサブキーを作成します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions\ClientExtensionGuid
サブキーは一意になるように GUID にする必要があります。また、次の値を含める必要があります。
状態メッセージを更新するのは、ポリシーを同期的に適用している場合のみにしてください。これにより、時間のかかるポリシーの適用中にフィードバックや診断情報を提供できます。状態メッセージ コールバック関数を使用するには、pStatusCallback が NULL でないことを確認する必要があります。その後、メッセージ文字列リソースを読み込みます。状態関数を呼び出すときは、その文字列が詳細 (verbose) 表示用かどうかを指定する必要があります。文字列が詳細表示用である場合、コールバック関数はコンピューターが詳細モードであることを確認したうえでメッセージを表示します。詳細については、StatusMessageCallback を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)