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

IGPEInformation

COM
IID8fc0b735-a0e1-11d1-a7d3-0000f87571e3継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IGPEInformation インターフェイスは、Microsoft 管理コンソール (MMC) の拡張スナップインがグループポリシー オブジェクト エディターと通信するためのメソッドを提供します。MMC の詳細については、Microsoft 管理コンソールを参照してください。

解説(Remarks)

グループポリシー オブジェクト エディターを使用せずに GPO を直接作成・変更するには、 IGroupPolicyObject インターフェイスのメソッドを参照してください。

メソッド 9

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetName(LPWSTR pszName, INT cchMaxLength)

GetName メソッドは、GPO の一意の名前を取得します。この値は通常 GUID です。

pszNameLPWSTRoutGPO の名前を受け取ります。
cchMaxLengthINTinpszName バッファーのサイズを文字数で指定します。

戻り値

メソッドが成功した場合、戻り値は S_OK です。それ以外の場合、Platform SDK のヘッダーファイル WinError.h で定義されている COM エラーコードのいずれかを返します。

解説(Remarks)

表示に適した GPO のフレンドリ名を取得するには、 GetDisplayName メソッドを呼び出します。

vtbl 4 HRESULT GetDisplayName(LPWSTR pszName, INT cchMaxLength)

GetDisplayName メソッドは、GPO の表示名を取得します。(IGPEInformation.GetDisplayName)

pszNameLPWSTRoutGPO の表示名を受け取ります。
cchMaxLengthINTinpszName バッファーのサイズを文字数で指定します。

戻り値

メソッドが成功した場合、戻り値は S_OK です。それ以外の場合、Platform SDK のヘッダーファイル WinError.h で定義されている COM エラーコードのいずれかを返します。

解説(Remarks)

GPO の一意の名前 (通常は GUID) を取得するには、 GetName メソッドを呼び出します。

vtbl 5 HRESULT GetRegistryKey(DWORD dwSection, HKEY* hKey)

GetRegistryKey メソッドは、GPO の指定されたセクションに対応するレジストリキーのルートへのハンドルを取得します。

dwSectionDWORDin

GPO のセクションを指定します。このパラメーターには次のいずれかの値を指定できます。

GPO_SECTION_USER

ユーザーセクション

GPO_SECTION_MACHINE

コンピューターセクション

hKeyHKEY*inoutレジストリキーのハンドルを受け取ります。このハンドルはすべてのアクセス権で開かれます。詳細については、 Registry Key Security and Access Rights を参照してください。

戻り値

メソッドが成功した場合、戻り値は S_OK です。それ以外の場合、Platform SDK のヘッダーファイル WinError.h で定義されている COM エラーコードのいずれかを返します。レジストリ情報が読み込まれていない場合、このメソッドは E_FAIL を返します。

解説(Remarks)

このレジストリハンドルは、レジストリキーのルートへのハンドルです。Policies キー内の値を取得または設定するには、まず RegOpenKeyEx 関数を呼び出して Software\Policies キーを開いてください。

レジストリハンドルの使用が終わったら、 RegCloseKey 関数を呼び出してハンドルを閉じてください。

vtbl 6 HRESULT GetDSPath(DWORD dwSection, LPWSTR pszPath, INT cchMaxPath)

GetDSPath メソッドは、GPO の指定されたセクションの Active Directory パスを取得します。

dwSectionDWORDin

GPO のセクションを指定します。このパラメーターには次のいずれかの値を指定できます。

GPO_SECTION_ROOT

ルートセクション

GPO_SECTION_USER

ユーザーセクション

GPO_SECTION_MACHINE

コンピューターセクション

pszPathLPWSTRout要求されたセクションのルートへの Active Directory パスを受け取ります。詳細については、以下の「解説」セクションを参照してください。
cchMaxPathINTinpszPath パラメーターのサイズを文字数で指定します。

戻り値

メソッドが成功した場合、戻り値は S_OK です。それ以外の場合、Platform SDK のヘッダーファイル WinError.h で定義されている COM エラーコードのいずれかを返します。

解説(Remarks)

コンピューターの GPO を指定して GetDSPath メソッドを呼び出した場合、メソッド自体は成功しますが、戻り時に pszPath パラメーターには空の文字列が格納されます。これは、コンピューターの GPO は Active Directory 上のストレージを持たず、ファイルシステム上のストレージのみを持つためです。

GPO の指定されたセクションのファイルシステムパスを取得するには、 GetFileSysPath メソッドを呼び出します。

vtbl 7 HRESULT GetFileSysPath(DWORD dwSection, LPWSTR pszPath, INT cchMaxPath)

GetFileSysPath メソッドは、GPO の指定されたセクションのファイルシステムパスを返します。パスは UNC 形式です。

dwSectionDWORDin

GPO のセクションを指定します。このパラメーターには次のいずれかの値を指定できます。

GPO_SECTION_ROOT

ルートセクション

GPO_SECTION_USER

ユーザーセクション

GPO_SECTION_MACHINE

コンピューターセクション

pszPathLPWSTRoutファイルシステムパスを受け取ります。
cchMaxPathINTinpszPath バッファーのサイズを文字数で指定します。

戻り値

メソッドが成功した場合、戻り値は S_OK です。それ以外の場合、Platform SDK のヘッダーファイル WinError.h で定義されている COM エラーコードのいずれかを返します。

解説(Remarks)

GPO の指定されたセクションの Active Directory パスを取得するには、 GetDSPath メソッドを呼び出します。

vtbl 8 HRESULT GetOptions(DWORD* dwOptions)

GetOptions メソッドは、ユーザーがグループポリシー オブジェクト エディターで選択したオプションを取得します。

dwOptionsDWORD*inoutユーザーが選択したオプションを表すビットマスク値を受け取ります。現在、このパラメーターはゼロのみを返します。

戻り値

メソッドが成功した場合、戻り値は S_OK です。それ以外の場合、Platform SDK のヘッダーファイル WinError.h で定義されている COM エラーコードのいずれかを返します。

vtbl 9 HRESULT GetType(GROUP_POLICY_OBJECT_TYPE* gpoType)

GetType メソッドは、編集中の GPO の種類情報を取得します。(IGPEInformation.GetType)

gpoTypeGROUP_POLICY_OBJECT_TYPE*inout

GPO の種類を受け取ります。システムはこのパラメーターに次のいずれかの値を設定します。

GPOTypeLocal

ローカル

GPOTypeRemote

リモート

GPOTypeDS

Active Directory

戻り値

メソッドが成功した場合、戻り値は S_OK です。それ以外の場合、Platform SDK のヘッダーファイル WinError.h で定義されている COM エラーコードのいずれかを返します。

vtbl 10 HRESULT GetHint(GROUP_POLICY_HINT_TYPE* gpHint)

GetHint メソッドは、この GPO をリンクできる Active Directory オブジェクトの種類を取得します。

gpHintGROUP_POLICY_HINT_TYPE*inout

ディレクトリサービスの種類を受け取ります。このパラメーターには次のいずれかの値が設定されます。

GPHintUnknown

リンク情報は利用できません。

GPHintMachine

オブジェクトはコンピューター (ローカルまたはリモート) にリンクできます。

GPHintSite

オブジェクトはサイトにリンクできます。

GPHintDomain

オブジェクトはドメインにリンクできます。

GPHintOrganizationalUnit

オブジェクトは組織単位 (OU) にリンクできます。

戻り値

メソッドが成功した場合、戻り値は S_OK です。それ以外の場合、Platform SDK のヘッダーファイル WinError.h で定義されている COM エラーコードのいずれかを返します。

解説(Remarks)

グループポリシー オブジェクト エディターは、どの Active Directory オブジェクトが特定の GPO にリンクされているかを判別できません。 GetHint メソッドは、ユーザーがグループポリシー オブジェクト エディターをどのように起動したかに基づいてリンク情報を提供します。エディターは次の方法で起動できます。

このメソッドの呼び出し結果に基づいてアプリケーションのユーザーインターフェイスをカスタマイズすることもできますが、返される値が誤ったスコープを示す可能性があるため、このメソッドの使用には注意が必要です。
vtbl 11 HRESULT PolicyChanged(BOOL bMachine, BOOL bAdd, GUID* pGuidExtension, GUID* pGuidSnapin)

PolicyChanged メソッドは、ポリシー設定が変更されたことをグループポリシー オブジェクト エディターに通知します。

bMachineBOOLinコンピューターポリシーとユーザーポリシーのどちらが変更されたかを指定します。この値が TRUE の場合は コンピューターポリシーが変更されたことを示します。FALSE の場合はユーザーポリシーが変更されたことを示します。
bAddBOOLin追加操作か削除操作かを指定します。このパラメーターが FALSE の場合、 指定された拡張機能 pGuidExtension の最後のポリシー設定が削除されます。それ以外のすべての場合、 このパラメーターは TRUE です。
pGuidExtensionGUID*inoutポリシーを処理するスナップイン拡張機能の GUID または一意の名前へのポインター。 GPO を .pol ファイルを処理するスナップインで処理する場合、このパラメーターには REGISTRY_EXTENSION_GUID 値を指定する必要があります。
pGuidSnapinGUID*inoutこのメソッドを呼び出すスナップイン拡張機能の GUID または一意の名前へのポインター。

戻り値

メソッドが成功した場合、戻り値は S_OK です。それ以外の場合、Platform SDK のヘッダーファイル WinError.h で定義されている COM エラーコードのいずれかを返します。

解説(Remarks)

拡張機能は、グループポリシー オブジェクトに変更を加えるたびにこのメソッドを呼び出す必要があります。MMC スナップインを 作成する際には、IComponentData インターフェイスを実装し、IComponentData::Notify メソッドを呼び出す必要があることに注意してください。IGPEInformation インターフェイスを取得するには、 IComponentData::Notify メソッドの event パラメーターに MMCN_EXPAND を、arg パラメーターに TRUE を設定します。その後、 QueryInterface を呼び出し、通常の QueryInterface 実装規則に従うことで IGPEInformation インターフェイスを取得できます。

たとえば、次のように呼び出してインターフェイスを取得できます。

lpDataObject->QueryInterface(IID_IGPEInformation, (LPVOID lpDataObject->*)&m_pGPTInformation);
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IGPEInformation "{8FC0B735-A0E1-11D1-A7D3-0000F87571E3}"
#usecom global IGPEInformation IID_IGPEInformation "{}"
#comfunc global IGPEInformation_GetName         3 var,int
#comfunc global IGPEInformation_GetDisplayName  4 var,int
#comfunc global IGPEInformation_GetRegistryKey  5 int,sptr
#comfunc global IGPEInformation_GetDSPath       6 int,var,int
#comfunc global IGPEInformation_GetFileSysPath  7 int,var,int
#comfunc global IGPEInformation_GetOptions      8 var
#comfunc global IGPEInformation_GetType         9 var
#comfunc global IGPEInformation_GetHint         10 var
#comfunc global IGPEInformation_PolicyChanged   11 int,int,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。