PFNPROCESSGROUPPOLICYEX コールバック関数 (userenv.h)
ProcessGroupPolicyEx 関数は、ポリシーの適用時に使用されるアプリケーション定義のコールバック関数です。 この拡張関数は、ポリシーの結果セット (RSoP) データのログ記録もサポートします。 PFNPROCESSGROUPPOLICYEX 型は、このコールバック関数へのポインターを定義します。 ProcessGroupPolicyEx は、アプリケーション定義関数名のプレースホルダーです。
構文
PFNPROCESSGROUPPOLICYEX Pfnprocessgrouppolicyex;
DWORD Pfnprocessgrouppolicyex(
[in] DWORD dwFlags,
[in] HANDLE hToken,
[in] HKEY hKeyRoot,
[in] PGROUP_POLICY_OBJECT pDeletedGPOList,
[in] PGROUP_POLICY_OBJECT pChangedGPOList,
[in] ASYNCCOMPLETIONHANDLE pHandle,
[in] BOOL *pbAbort,
[in] PFNSTATUSMESSAGECALLBACK pStatusCallback,
[in] IWbemServices *pWbemServices,
[out] HRESULT *pRsopStatus
)
{...}
パラメーター
[in] dwFlags
このパラメーターには、次のフラグを 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_NOCHANGES
GPO に対する変更は検出されませんでした。
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 フラグにチェックできます。
[in] hToken
LogonUser、CreateRestrictedToken、DuplicateToken、OpenProcessToken、または OpenThreadToken 関数から返される、ユーザーまたはコンピューターのトークン。 このトークンには 、TOKEN_IMPERSONATE とTOKEN_QUERYアクセス 権 が必要です。 詳細については、「 Access-Token オブジェクトのアクセス権 」および「 クライアントの偽装」を参照してください。
[in] hKeyRoot
HKEY_LOCAL_MACHINEまたはHKEY_CURRENT_USERレジストリ キーを処理します。
[in] pDeletedGPOList
削除された GPO 構造体の一覧を受け取るポインター。 詳細については、「 GROUP_POLICY_OBJECT」を参照してください。
[in] pChangedGPOList
変更された GPO 構造体の一覧を受け取るポインター。 詳細については、「 GROUP_POLICY_OBJECT」を参照してください。
[in] pHandle
非同期完了ハンドル。 コールバック関数が非同期処理をサポートしていない場合、このハンドルは 0 です。
[in] pbAbort
GPO の処理を続行するかどうかを指定します。 このパラメーターが TRUE の場合、GPO の処理は停止します。 このパラメーターが FALSE の場合、GPO の処理は続行されます。
[in] pStatusCallback
ステータス メッセージを表示する StatusMessageCallback コールバック関数へのポインター。 このパラメーターは、特定の場合に NULL にすることができます。 たとえば、システムがバックグラウンドでポリシーを適用している場合、ステータス ユーザー インターフェイスは存在せず、アプリケーションは表示されるステータス メッセージを送信できません。 詳細については、「解説」を参照してください。
[in] pWbemServices
ポリシー データを書き込む必要がある RSoP 名前空間への WMI サービス ポインターを指定します。 RSoP ログ記録が無効になっている場合、このパラメーターは NULL であり、拡張機能で RSoP データをログに記録しないことを示します。
[out] pRsopStatus
RSoP ログが成功したかどうかを示す HRESULT リターン コードへのポインター。
戻り値
ポリシーが正常に適用された場合は、 ERROR_SUCCESSを返します。 GPO リストに変更がなく、拡張機能を再度呼び出す場合は、 ERROR_OVERRIDE_NOCHANGESを返します。 ERROR_OVERRIDE_NOCHANGESを返すと、NoGPOListChanges レジストリ値が設定されている場合でも、拡張機能が再び呼び出されます。 (このレジストリ値の詳細については、「解説」を参照してください)。
ポリシーの非同期フォアグラウンド更新のために関数が呼び出されたが、非同期更新中にポリシーを適用できなかった場合は、ERROR_SYNC_FOREGROUND_REFRESH_REQUIREDを返します。 ERROR_SYNC_FOREGROUND_REFRESH_REQUIREDを返す場合は、ポリシーの同期フォアグラウンド更新のために関数を再度呼び出す必要があることを示します。
それ以外の場合は、 システム エラー コードを返します。
注釈
詳細については、「グループ ポリシー クライアント側拡張機能の実装」を参照してください。
この関数は、ローカル コンピューターに対する広範な特権を持つ LocalSystem アカウントのコンテキストで呼び出されます。 ネットワーク リソースを使用するには、 hToken パラメーターで指定されたトークンを使用して、ユーザーまたはコンピューターを偽装する必要があります。
このコールバック関数を登録するには、次のレジストリ キーの下にサブキーを作成します。
Hkey_local_machine\ソフトウェア\マイクロソフト\\ Windows NT CurrentVersion\Winlogon\GPExtensions\ClientExtensionGuid
一意になるように、サブキーは GUID にする必要があります。 これには、次の値が含まれている必要があります。
ポリシーを同期的に適用する場合にのみ、ステータス メッセージを更新する必要があります。 これにより、長いポリシー アプリケーション中にフィードバックと診断を提供できます。 ステータス メッセージ コールバック関数を使用するには、 pStatusCallback が NULL ではないことを確認する必要があります。 次に、メッセージ文字列リソースを読み込みます。 status 関数を呼び出すときは、文字列が詳細かどうかを示す必要があります。 文字列が verbose の場合、コールバック関数はコンピューターが詳細モードであることを確認し、メッセージを表示します。 詳細については、「 StatusMessageCallback」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | userenv.h |