Win32 API 日本語リファレンス
ホームSystem.GroupPolicy › IGPMSecurityInfo

IGPMSecurityInfo

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IIDb6c31ed4-1c93-4d3e-ae84-eb6d61161b60継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

IGPMSecurityInfo インターフェイスは、GPMSecurityInfo コレクションのメソッドを定義します。このコレクションは、管理スコープ (SOM)、GPO、WMI フィルターなどの特定のオブジェクトに設定できる、ポリシー関連のアクセス許可の集合を表します。

解説(Remarks)

このインターフェイスは、ポリシー関連のアクセス許可をカテゴリに分類します。次の表に、カテゴリ、 各カテゴリに含まれるアクセス許可、およびそれらを適用できるオブジェクトを示します。

セキュリティ保護可能なオブジェクト アクセス許可のカテゴリ アクセス許可のレベル
サイト GPO のリンク permSOMLink
OU GPO のリンク permSOMLink
RSoP ログ記録 permSOMLogging
RSoP 計画 permSOMPlanning
ドメイン GPO のリンク permSOMLink
GPO の作成 permSOMGPOCreate
RSoP ログ記録 permSOMLogging
RSoP 計画 permSOMPlanning
WMI フィルターの作成 permSOMWMICreate
permSOMWMIFullControl
WMI フィルター WMI フィルターの編集 permWMIFilterEdit
すべての WMI フィルターのフル コントロール permWMIFilterFullControl
WMI フィルターのカスタム制御 permWMIFilterCustom
GPO セキュリティ フィルター処理 permGPOApply
委任 permGPORead
permGPOEdit
permGPOEditSecurityAndDelete
permGPOCustom

GPMSecurityInfo コレクションは、特定の SOM、GPO、または WMI フィルターに対する GPMPermission オブジェクトのコレクションを表します。ただし、 GPMSecurityInfo オブジェクトはコレクション オブジェクトではあるものの、 一般的なコレクション オブジェクトとは異なる点に注意してください。これは、 Add メソッドが、あるトラスティに対して GPMPermission オブジェクトを追加しようとしたときに、そのアクセス許可が 当該トラスティの既存のアクセス許可より低いレベルであった場合、何も行われないためです。詳細については、 Add メソッドを参照してください。

ポリシー関連のアクセス許可の詳細については、 IGPM::CreatePermission を参照してください。

メソッド 6

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT get_Count(INT* pVal)

コレクション内の GPMPermission オブジェクトの数を返します。

pValINT*outコレクションに含まれるアクセス許可エントリの数を受け取るポインタである。
vtbl 8 HRESULT get_Item(INT lIndex, VARIANT* pVal)

指定されたインデックスに対応する GPMPermission オブジェクトをコレクションから返します。

lIndexINTin取得する項目の 1 始まりのインデックスを指定する。
pValVARIANT*out取得したアクセス許可エントリを格納する VARIANT へのポインタである。
vtbl 9 HRESULT get__NewEnum(IEnumVARIANT** ppEnum)

コレクションの列挙子を取得します。(IGPMSecurityInfo.get__NewEnum)

ppEnumIEnumVARIANT**outコレクションの列挙子オブジェクトの IEnumVARIANT インターフェイスへのポインター。IEnumVARIANT には、コレクションを反復処理するために使用できる複数のメソッドが用意されています。

戻り値

成功した場合は S_OK を返します。エラーが発生した場合は失敗コードを返します。

vtbl 10 HRESULT Add(IGPMPermission* pPerm)

GPMPermission オブジェクトで指定されたアクセス許可を GPMSecurityInfo コレクションに追加します。既存のアクセス許可より高いレベルのアクセス許可を追加できます。適用される制限の詳細については、後述の「解説」セクションを参照してください。

pPermIGPMPermission*inコレクションに追加する GPMPermission オブジェクトへのポインター。

戻り値

JScript

成功した場合は S_OK を返します。エラーが発生した場合は失敗コードを返します。

VB

成功した場合は S_OK を返します。エラーが発生した場合は失敗コードを返します。

解説(Remarks)

トラスティとは、GPO、SOM、または WMI フィルターに対するアクセス許可を付与できるユーザー、コンピューター、またはセキュリティ グループのことです。

特定のオブジェクトに適用されるアクセス許可のレベルには、重複がある場合があります。例として次のようなものがあります。

トラスティに対して追加しようとするアクセス許可が、そのオブジェクトに既に存在するアクセス許可と (上記の意味で) 重複する場合、次の規則が適用されます。
  1. オブジェクトに継承されたアクセス許可が存在する場合、そのユーザーに対してより高いレベルのアクセス許可を追加することはできません。これは、継承されたアクセス許可を変更できないためです。継承されたアクセス許可を変更するには、まず親コンテナーからそのアクセス許可を削除する必要があります。
  2. オブジェクトに拒否のアクセス許可が存在する場合、そのユーザーの既存のアクセス許可に対して、より高いレベルのアクセス許可を追加することはできません。
  3. オブジェクトに明示的に設定されたアクセス許可が存在する場合、より低いレベルのアクセス許可を追加してもユーザーのアクセス許可は変更されません。また、メソッドは S_FALSE を返し、呼び出し元のアプリケーションでこれを判定できます。
  4. オブジェクトに明示的に設定されたアクセス許可が存在する場合、より高いレベルのアクセス許可を追加すると、ユーザーのアクセス許可が変更されます。
  5. permGPORead は permGPOEdit および permGPOApply のサブセットであるため、permGPORead を削除できるのは permGPOEdit と permGPOApply の両方が削除されている場合のみです。
  6. 現在のアクセス許可が継承可能でなく、追加するアクセス許可の Inheritable プロパティが TRUE に設定されている場合、そのアクセス許可は継承可能なものに変更されます。
  7. 現在のアクセス許可が継承可能で、追加するアクセス許可の Inheritable プロパティが FALSE に設定されている場合、メソッドは S_FALSE を返します。
GPMC を使用して拒否、継承、またはカスタムのアクセス許可を追加することはできませんが、継承可能なアクセス許可は追加できます。拒否およびカスタムのアクセス許可は削除できます。拒否のアクセス許可を追加しようとするとエラーになります。カスタムのアクセス許可とは、GPMC が定義するアクセス許可レベルのいずれにも一致しないものを指します。たとえば、トラスティに GPO の「Apply」ACE が付与されているが「Read」ACE は付与されていない場合、そのアクセス許可はカスタムのアクセス許可となります。アクセス許可が拒否または継承であるかどうかを判定するには、 IGPMPermission Property Methods を呼び出します。

定義済みのポリシー関連アクセス許可の詳細については、 IGPM::CreatePermission を参照してください。アクセス許可のカテゴリとレベルの詳細については、 IGPMSecurityInfo を参照してください。

GPO にアクセス許可を追加する場合、Inheritable プロパティの値は無視され、TRUE に設定されます。これは、すべての GPO のアクセス許可が、ディレクトリ サービス内の User および Computer 子コンテナー、およびシステム ボリューム フォルダー (SysVol) 内のサブディレクトリに継承される必要があるためです。WMI フィルターにアクセス許可を追加する場合、Inheritable プロパティの値は常に FALSE に設定されます。

セキュリティ グループの詳細については、Active Directory プログラマーズ ガイドの How Security Groups are Used in Access Control を参照してください。

vtbl 11 HRESULT Remove(IGPMPermission* pPerm)

指定された GPMPermission オブジェクトで示されるアクセス許可を GPMSecurityInfo コレクションから削除します。

pPermIGPMPermission*inコレクションから削除する GPMPermission オブジェクトへのポインター。

戻り値

JScript

成功した場合は S_OK を返します。エラーが発生した場合は失敗コードを返します。

VB

成功した場合は S_OK を返します。エラーが発生した場合は失敗コードを返します。

解説(Remarks)

継承されたアクセス許可は削除できません。アクセス許可が継承されたものかどうかを判定するには、 IGPMPermission Property Methods を参照してください。

このメソッドは、指定された GPMPermission オブジェクトの存在を確認します。このオブジェクトは、トラスティ (ユーザー、コンピューター、またはセキュリティ グループ) と、単一のオブジェクト (たとえば GPO、SOM、WMI フィルター) に適用されるアクセス許可との組み合わせです。オブジェクトがコレクション内に存在する場合、メソッドはそれを削除します。

削除対象として指定されたアクセス許可が、トラスティに存在するアクセス許可より高いレベルを表す場合、メソッドはより低いレベルのアクセス許可を削除します。たとえば、トラスティがより低い permGPOEdit アクセス許可を保持しているにもかかわらず、permGPOEditSecurityAndDelete アクセス許可の削除を指定した場合が該当します。この場合、メソッドは permGPOEdit アクセス許可を削除します。

削除対象として指定されたアクセス許可が、トラスティに存在するアクセス許可より低いレベルを表す場合、メソッドは S_FALSE を返します。

アクセス許可の削除に成功すると、要素の列挙中に削除が行われた場合であっても、メソッドは get__NewEnum メソッドによって返されたすべての列挙子を更新します。

ポリシー関連のアクセス許可の詳細については、 IGPM::CreatePermission を参照してください。

セキュリティ グループの詳細については、Active Directory プログラマーズ ガイドの How Security Groups are Used in Access Control を参照してください。

vtbl 12 HRESULT RemoveTrustee(LPWSTR bstrTrustee)

指定されたトラスティに対するポリシー関連のアクセス許可をすべて削除します。トラスティとは、GPO、SOM、または WMI フィルターに対するアクセス許可を付与できるユーザー、コンピューター、またはセキュリティ グループのことです。

bstrTrusteeLPWSTRin必須。すべてのアクセス許可を削除する対象となるトラスティの名前または SID。名前は Security Accounts Manager (SAM) 互換形式 (Exampledomain\Someone) で指定します。NULL 終端文字列を使用してください。

戻り値

JScript

成功した場合は S_OK を返します。エラーが発生した場合は失敗コードを返します。

VB

成功した場合は S_OK を返します。エラーが発生した場合は失敗コードを返します。

解説(Remarks)

アクセス許可の削除に成功すると、要素の列挙中に削除が行われた場合であっても、メソッドは get__NewEnum メソッドによって返されたすべての列挙子を更新します。

ポリシー関連のアクセス許可の詳細については、 IGPM::CreatePermission を参照してください。セキュリティ グループの詳細については、Active Directory プログラマーズ ガイドの How Security Groups are Used in Access Control を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IGPMSecurityInfo "{B6C31ED4-1C93-4D3E-AE84-EB6D61161B60}"
#usecom global IGPMSecurityInfo IID_IGPMSecurityInfo "{}"
#comfunc global IGPMSecurityInfo_get_Count      7 var
#comfunc global IGPMSecurityInfo_get_Item       8 int,var
#comfunc global IGPMSecurityInfo_get__NewEnum   9 sptr
#comfunc global IGPMSecurityInfo_Add            10 sptr
#comfunc global IGPMSecurityInfo_Remove         11 sptr
#comfunc global IGPMSecurityInfo_RemoveTrustee  12 wstr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。