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

IGroupPolicyObject

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

公式ドキュメント

IGroupPolicyObject インターフェイスは、グループポリシーオブジェクトエディターを使用せずに、GPO を直接作成および変更するためのメソッドを提供します。

解説(Remarks)

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

メソッド 18

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

vtbl 3 HRESULT New(LPWSTR pszDomainName, LPWSTR pszDisplayName, DWORD dwFlags)

New メソッドは、指定された表示名を持つ新しい GPO を Active Directory に作成します。このメソッドは OpenDSGPO メソッドを使用して GPO を開きます。

pszDomainNameLPWSTRin作成するオブジェクトの Active Directory パスを指定します。パスがドメインコントローラーを指定している場合、GPO はその DC 上に作成されます。それ以外の場合、システムが呼び出し元に代わって DC を選択します。
pszDisplayNameLPWSTRinoptional作成するオブジェクトの表示名を指定します。
dwFlagsDWORDin

GPO のレジストリ情報を読み込むかどうかを指定します。このパラメーターには次のいずれかの値を指定できます。

GPO_OPEN_LOAD_REGISTRY

レジストリ情報を読み込みます。

GPO_OPEN_READ_ONLY

GPO を読み取り専用モードで開きます。

戻り値

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

解説(Remarks)

既存の GPO を開くには、 OpenDSGPO メソッドを呼び出します。

vtbl 4 HRESULT OpenDSGPO(LPWSTR pszPath, GPO_OPEN_FLAGS dwFlags)

OpenDSGPO メソッドは、指定された GPO を開き、必要に応じてレジストリ情報を読み込みます。

pszPathLPWSTRin開くオブジェクトの Active Directory パスを指定します。パスがドメインコントローラーを指定している場合、GPO はその DC 上に作成されます。それ以外の場合、システムが呼び出し元に代わって DC を選択します。
dwFlagsGPO_OPEN_FLAGSin

GPO のレジストリ情報を読み込むかどうかを指定します。このパラメーターには次のいずれかの値を指定できます。

GPO_OPEN_LOAD_REGISTRY

レジストリ情報を読み込みます。

GPO_OPEN_READ_ONLY

GPO を読み取り専用モードで開きます。

戻り値

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

解説(Remarks)

Active Directory に新しい GPO を作成するには、 New メソッドを呼び出します。

vtbl 5 HRESULT OpenLocalMachineGPO(GPO_OPEN_FLAGS dwFlags)

OpenLocalMachineGPO メソッドは、コンピューターの既定の GPO を開き、必要に応じてレジストリ情報を読み込みます。

dwFlagsGPO_OPEN_FLAGSin

GPO のレジストリ情報を読み込むかどうかを指定します。このパラメーターには次のいずれかの値を指定できます。

GPO_OPEN_LOAD_REGISTRY

レジストリ情報を読み込みます。

GPO_OPEN_READ_ONLY

GPO を読み取り専用モードで開きます。

戻り値

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

解説(Remarks)

リモートコンピューターの既定の GPO を開くには、 OpenRemoteMachineGPO メソッドを呼び出します。

vtbl 6 HRESULT OpenRemoteMachineGPO(LPWSTR pszComputerName, GPO_OPEN_FLAGS dwFlags)

OpenRemoteMachineGPO メソッドは、指定されたリモートコンピューターの既定の GPO を開き、必要に応じてレジストリ情報を読み込みます。

pszComputerNameLPWSTRinコンピューター名を指定します。名前の形式は \\ComputerName です。
dwFlagsGPO_OPEN_FLAGSin

GPO のレジストリ情報を読み込むかどうかを指定します。このパラメーターには次のいずれかの値を指定できます。

GPO_OPEN_LOAD_REGISTRY

レジストリ情報を読み込みます。

GPO_OPEN_READ_ONLY

GPO を読み取り専用モードで開きます。

戻り値

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

解説(Remarks)

リモート GPO のコンピューター名を取得するには、 GetMachineName メソッドを呼び出します。ローカルコンピューターの既定の GPO を開くには、 OpenLocalMachineGPO を呼び出してください。

vtbl 7 HRESULT Save(BOOL bMachine, BOOL bAdd, GUID* pGuidExtension, GUID* pGuid)

Save メソッドは、指定されたレジストリポリシー設定をディスクに保存し、GPO のリビジョン番号を更新します。

bMachineBOOLin保存するレジストリポリシー設定を指定します。このパラメーターが TRUE の場合、コンピューターのポリシー設定が保存されます。それ以外の場合は、ユーザーのポリシー設定が保存されます。
bAddBOOLin追加操作か削除操作かを指定します。このパラメーターが FALSE の場合、指定された拡張機能 pGuidExtension の最後のポリシー設定が削除されます。それ以外のすべての場合、このパラメーターは TRUE です。
pGuidExtensionGUID*inoutポリシーを処理するスナップイン拡張機能の GUID または一意の名前を指定します。GPO を .pol ファイルを処理するスナップインで処理する場合は、REGISTRY_EXTENSION_GUID の値を指定する必要があります。
pGuidGUID*inoutこのポリシーの編集に使用される MMC スナップインを識別する GUID を指定します。スナップインは Microsoft 製のものでも、サードパーティ製のものでもかまいません。

戻り値

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

解説(Remarks)

Save メソッドを使用してローカルグループポリシーオブジェクトのユーザー部分またはコンピューター部分を有効または無効にすると、ポリシーの更新が自動的にトリガーされます。
vtbl 8 HRESULT Delete()

Delete メソッドは GPO を削除します。

戻り値

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

解説(Remarks)

このメソッドを呼び出した後は、GPO のすべてのデータが削除されているため、 IGroupPolicyObject インターフェイスの他のメソッドを呼び出すことはできません。

Delete メソッドを使用してローカルグループポリシーオブジェクトを削除しても、ポリシーの更新は自動的にはトリガーされません。
vtbl 9 HRESULT GetName(LPWSTR pszName, INT cchMaxLength)

GetName メソッドは、GPO の一意の名前を取得します。

pszNameLPWSTRoutGPO 名を受け取るバッファーへのポインター。
cchMaxLengthINTinpszName バッファーのサイズを文字数で指定します。

戻り値

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

解説(Remarks)

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

vtbl 10 HRESULT GetDisplayName(LPWSTR pszName, INT cchMaxLength)

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

pszNameLPWSTRout表示名を受け取るバッファーへのポインター。
cchMaxLengthINTinpszName バッファーのサイズを文字数で指定します。

戻り値

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

解説(Remarks)

GPO の表示名を設定するには、 SetDisplayName メソッドを呼び出します。GPO の一意の名前 (Active Directory オブジェクトの場合は GUID) を取得するには、 GetName を呼び出してください。

vtbl 11 HRESULT SetDisplayName(LPWSTR pszName)

SetDisplayName メソッドは、GPO の表示名を設定します。

pszNameLPWSTRin新しい表示名を指定します。

戻り値

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

解説(Remarks)

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

vtbl 12 HRESULT GetPath(LPWSTR pszPath, INT cchMaxLength)

GetPath メソッドは、GPO へのパスを取得します。

pszPathLPWSTRoutパスを受け取るバッファーへのポインター。GPO が Active Directory オブジェクトの場合、パスは ADSI 名形式です。GPO がコンピューターオブジェクトの場合、このパラメーターはファイルシステムパスを受け取ります。
cchMaxLengthINTinpszPath バッファーに格納できる最大文字数を指定します。

戻り値

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

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

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

dwSectionDWORDin

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

GPO_SECTION_ROOT

ルートセクション

GPO_SECTION_USER

ユーザーセクション

GPO_SECTION_MACHINE

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

pszPathLPWSTRoutADSI 形式 (LDAP://cn=user, ou=users, dc=coname, dc=com) のパスを受け取るバッファーへのポインター。
cchMaxPathINTinpszPath バッファーに格納できる最大文字数を指定します。

戻り値

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

解説(Remarks)

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

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

vtbl 14 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 15 HRESULT GetRegistryKey(GPO_SECTION dwSection, HKEY* hKey)

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

dwSectionGPO_SECTIONin

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

GPO_SECTION_ROOT

ルートセクション

GPO_SECTION_MACHINE

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

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

戻り値

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

解説(Remarks)

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

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

vtbl 16 HRESULT GetOptions(GPO_OPTIONS* dwOptions)

GetOptions メソッドは、GPO のオプションを取得します。

dwOptionsGPO_OPTIONS*inout

オプションを受け取ります。このパラメーターには次のオプションを 1 つ以上指定できます。

GPO_OPTION_DISABLE_USER

GPO のユーザー部分が無効になっています。

GPO_OPTION_DISABLE_MACHINE

GPO のコンピューター部分が無効になっています。

戻り値

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

解説(Remarks)

GPO のオプションを設定するには、 SetOptions メソッドを呼び出します。

vtbl 17 HRESULT SetOptions(GPO_OPTIONS dwOptions, DWORD dwMask)

SetOptions メソッドは、GPO のオプションを設定します。

dwOptionsGPO_OPTIONSin

新しいオプション値を指定します。このパラメーターには次のオプションを 1 つ以上指定できます。詳細については、以下の解説セクションを参照してください。

GPO_OPTION_DISABLE_USER

GPO のユーザー部分を無効にします。

GPO_OPTION_DISABLE_MACHINE

GPO のコンピューター部分を無効にします。

dwMaskDWORDin

変更するオプションを指定します。このパラメーターには次のオプションを 1 つ以上指定できます。詳細については、以下の解説セクションを参照してください。

GPO_OPTION_DISABLE_USER

GPO のユーザー部分を無効にします。

GPO_OPTION_DISABLE_MACHINE

GPO のコンピューター部分を無効にします。

戻り値

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

解説(Remarks)

SetOptions メソッドを使用してローカルグループポリシーオブジェクトのユーザー部分またはコンピューター部分を有効または無効にすると、ポリシーの更新が自動的にトリガーされます。
オプションを変更するには、dwMask パラメーターで該当するフラグを設定する必要があります。フラグが設定されている場合、システムは dwOptions パラメーターを読み取って新しい状態を設定します。たとえば、GPO のユーザー部分を無効にし、コンピューター部分を変更しないままにするには、 SetOptions メソッドを次のように呼び出します。
SetOptions(GPO_OPTION_DISABLE_USER, GPO_OPTION_DISABLE_USER)

ユーザー部分を有効にし、コンピューター部分を無効にするには、 SetOptions メソッドを次のように呼び出します。

SetOptions(GPO_OPTION_DISABLE_MACHINE, GPO_OPTION_DISABLE_USER | GPO_OPTION_DISABLE_MACHINE)

GPO のオプションを取得するには、 GetOptions メソッドを呼び出します。

vtbl 18 HRESULT GetType(GROUP_POLICY_OBJECT_TYPE* gpoType)

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

gpoTypeGROUP_POLICY_OBJECT_TYPE*inout

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

GPOTypeDS

Active Directory

GPOTypeLocal

ローカル

GPOTypeRemote

リモート

戻り値

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

vtbl 19 HRESULT GetMachineName(LPWSTR pszName, INT cchMaxLength)

GetMachineName メソッドは、リモート GPO のコンピューター名を取得します。これは OpenRemoteMachineGPO メソッドで指定された名前です。

pszNameLPWSTRoutコンピューター名を受け取るバッファーへのポインター。
cchMaxLengthINTinpszName バッファーのサイズを文字数で指定します。

戻り値

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

vtbl 20 HRESULT GetPropertySheetPages(HPROPSHEETPAGE** hPages, DWORD* uPageCount)

GetPropertySheetPages メソッドは、GPO に関連付けられたプロパティシートページを取得します。

hPagesHPROPSHEETPAGE**inoutプロパティシートページの配列へのポインターのアドレス。
uPageCountDWORD*inoutプロパティシート配列内のページ数を受け取ります。

戻り値

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

解説(Remarks)

このメソッドは、 LocalAlloc 関数を使用して配列のメモリを割り当てます。プロパティシートページの使用が終わったら、 LocalFree 関数を使用して配列を解放してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IGroupPolicyObject "{EA502723-A23D-11D1-A7D3-0000F87571E3}"
#usecom global IGroupPolicyObject IID_IGroupPolicyObject "{EA502722-A23D-11D1-A7D3-0000F87571E3}"
#comfunc global IGroupPolicyObject_New                    3 wstr,wstr,int
#comfunc global IGroupPolicyObject_OpenDSGPO              4 wstr,int
#comfunc global IGroupPolicyObject_OpenLocalMachineGPO    5 int
#comfunc global IGroupPolicyObject_OpenRemoteMachineGPO   6 wstr,int
#comfunc global IGroupPolicyObject_Save                   7 int,int,var,var
#comfunc global IGroupPolicyObject_Delete                 8
#comfunc global IGroupPolicyObject_GetName                9 var,int
#comfunc global IGroupPolicyObject_GetDisplayName         10 var,int
#comfunc global IGroupPolicyObject_SetDisplayName         11 wstr
#comfunc global IGroupPolicyObject_GetPath                12 var,int
#comfunc global IGroupPolicyObject_GetDSPath              13 int,var,int
#comfunc global IGroupPolicyObject_GetFileSysPath         14 int,var,int
#comfunc global IGroupPolicyObject_GetRegistryKey         15 int,sptr
#comfunc global IGroupPolicyObject_GetOptions             16 var
#comfunc global IGroupPolicyObject_SetOptions             17 int,int
#comfunc global IGroupPolicyObject_GetType                18 var
#comfunc global IGroupPolicyObject_GetMachineName         19 var,int
#comfunc global IGroupPolicyObject_GetPropertySheetPages  20 sptr,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。