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

IUpdateServiceManager

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

公式ドキュメント

Windows Update Agent または自動更新に対する更新プログラムサービスの登録を追加または削除します。(IUpdateServiceManager)

解説(Remarks)

このインターフェイスのインスタンスは、UpdateServiceManager コクラスを使用して作成できます。オブジェクトを作成するには、プログラム識別子 Microsoft.Update.ServiceManager を使用します。

メソッド 7

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

vtbl 7 HRESULT get_Services(IUpdateServiceCollection** retval)

WUA に登録されているサービスの IUpdateServiceCollection を取得します。

retvalIUpdateServiceCollection**out登録されている更新サービスのコレクションを受け取る IUpdateServiceCollection へのポインタである。
vtbl 8 HRESULT AddService(LPWSTR serviceID, LPWSTR authorizationCabPath, IUpdateService** retval)

サービスを Windows Update Agent (WUA) に登録します。

serviceIDLPWSTRin登録するサービスの識別子。
authorizationCabPathLPWSTRinサービスの登録に必要な情報を格納した、Microsoft の署名付きローカルキャビネットファイルのパス。
retvalIUpdateService**out追加されたサービスを表す IUpdateService インターフェイス。

戻り値

成功した場合は S_OK を返します。それ以外の場合は、COM または Windows のエラーコードを返します。

このメソッドは、次のエラーコードを返すこともあります。

戻り値 説明
E_INVALIDARG
パラメーターの値が無効です。
E_ACCESSDENIED
このメソッドはリモートコンピューターから呼び出すことはできません。
WU_E_DS_SERVICEEXPIRED
認証 Cab の有効期限が切れています。
WU_E_DS_INVALIDOPERATION
自動更新の状態を変更できませんでした。

解説(Remarks)

要求された自動更新の状態変更が認証 Cab の仕様に反する場合、このメソッドは WU_E_DS_INVALIDOPERATION を返します。認証 Cab が署名されていない場合は、WinVerifyTrust によってエラーが返されます。

vtbl 9 HRESULT RegisterServiceWithAU(LPWSTR serviceID)

サービスを自動更新に登録します。

serviceIDLPWSTRin登録するサービスの識別子。

戻り値

成功した場合は S_OK を返します。それ以外の場合は、COM または Windows のエラーコードを返します。

このメソッドは、次のエラーコードを返すこともあります。

戻り値 説明
E_INVALIDARG
パラメーターの値が無効です。
E_ACCESSDENIED
このメソッドはリモートコンピューターから呼び出すことはできません。
WU_E_DS_UNKNOWNSERVICE
不明なサービスを登録しようとしました。
WU_E_DS_NEEDWINDOWSSERVICE
Windows Update サービスを削除できませんでした。
WU_E_INVALID_OPERATION
コンピューターが更新プログラムサイトにアクセスできなかったか、自動更新の状態を変更できませんでした。

解説(Remarks)

登録するサービスが自動更新にとって不明な場合、このメソッドは WU_E_DS_UNKNOWNSERVICE を返します。

無効なサービス ID を指定してこのメソッドを呼び出した場合、WU_E_INVALID_OPERATION を返します。また、サービス ID が有効であってもサービスを自動更新に登録できない場合も WU_E_INVALID_OPERATION を返します。つまり、要求された自動更新の状態変更が認証キャビネットファイルの仕様に反する場合です(たとえば CanRegisterWithAU プロパティが FALSE に設定されている場合)。認証キャビネットファイルが署名されていない場合は、WinVerifyTrust 関数によってエラーが返されます。

Windows Update サービスを削除しようとした場合、このメソッドは WU_E_DS_NEEDWINDOWSSERVICE を返します。

vtbl 10 HRESULT RemoveService(LPWSTR serviceID)

Windows Update Agent (WUA) からサービスの登録を削除します。

serviceIDLPWSTRin登録を解除するサービスの識別子。

戻り値

成功した場合は S_OK を返します。それ以外の場合は、COM または Windows のエラーコードを返します。このメソッドは、次のエラーコードを返すこともあります。

戻り値 説明
E_INVALIDARG
パラメーターの値が無効でした。
E_ACCESSDENIED
このメソッドはリモートコンピューターから呼び出すことはできません。
WU_E_DS_NEEDWINDOWSSERVICE
Windows Update サービスを削除できませんでした。
WU_E_DS_INVALIDOPERATION
自動更新の状態を変更できませんでした。このエラーは、サービスを削除しようとした場合に返されます。
WU_E_DS_UNKNOWNSERVICE
不明なサービスを登録または削除しようとしました。
vtbl 11 HRESULT UnregisterServiceWithAU(LPWSTR serviceID)

サービスの自動更新への登録を解除します。

serviceIDLPWSTRin登録を解除するサービスの識別子。

戻り値

成功した場合は S_OK を返します。それ以外の場合は、COM または Windows のエラーコードを返します。

このメソッドは、次のエラーコードを返すこともあります。

戻り値 説明
E_INVALIDARG
パラメーターの値が無効です。
E_ACCESSDENIED
このメソッドはリモートコンピューターから呼び出すことはできません。
WU_E_DS_NEEDWINDOWSSERVICE
Windows Update サービスを削除できませんでした。
WU_E_DS_INVALIDOPERATION
自動更新の状態を変更できませんでした。
WU_E_DS_UNKNOWNSERVICE
不明なサービスを登録しようとしました。
WU_E_INVALID_OPERATION
コンピューターが更新プログラムサイトにアクセスできませんでした。
WU_E_CALL_CANCELLED
ユーザーが変更をキャンセルしました。

解説(Remarks)

要求された自動更新の状態変更が認証 Cab の仕様に反する場合、このメソッドは WU_E_DS_INVALIDOPERATION を返します。認証 Cab が署名されていない場合は、WinVerifyTrust 関数によってエラーが返されます。

削除するサービスが存在しない場合、このメソッドは WU_E_DS_UNKNOWNSERVICE を返します。

Windows Update サービスを削除しようとし、かつそれが自動更新に登録されている唯一のサービスである場合、このメソッドは WU_E_DS_NEEDWINDOWSSERVICE を返します。

vtbl 12 HRESULT AddScanPackageService(LPWSTR serviceName, LPWSTR scanFileLocation, INT flags, IUpdateService** ppService)

スキャンパッケージをサービスとして Windows Update Agent (WUA) に登録し、IUpdateService インターフェイスを返します。

serviceNameLPWSTRinスキャンパッケージサービスのわかりやすい名前。
scanFileLocationLPWSTRinサービスとして登録する、Microsoft の署名付きスキャンファイルのパス。
flagsINTin

スキャンパッケージのサービス登録を削除する方法を決定します。

指定可能な値については、UpdateServiceOption を参照してください。

ppServiceIUpdateService**outサービス登録情報を格納した IUpdateService インターフェイスへのポインター。

戻り値

成功した場合は S_OK を返します。それ以外の場合は、COM または Windows のエラーコードを返します。このメソッドは、次のエラーコードを返すこともあります。

戻り値 説明
E_INVALIDARG
パラメーターの値が無効です。
E_ACCESSDENIED
このメソッドはリモートコンピューターから呼び出すことはできません。
WU_E_INVALID_OPERATION
コンピューターが更新プログラムサイトにアクセスできませんでした。

解説(Remarks)

サービスの ID を IUpdateSearcher インターフェイスの ServiceID プロパティとして渡すことで、検索で使用できます。

リソースを解放するには、不要になったサービスを削除してください。サービスを削除するには、RemoveService メソッドを使用します。

AddScanPackageService メソッドが登録したサービスに対しては、RegisterServiceWithAU メソッドを呼び出さないでください。

AddScanPackageService によって返されるサービスは、IUpdateServiceManager インターフェイスの Services プロパティが返すサービスのコレクションに含まれます。このサービスには特別な IsScanPackageService プロパティがあります。

認証 Cab が署名されていない場合は、WinVerifyTrust によってエラーが返されます。

インターフェイスを実装するオブジェクトがロックダウンされている場合、このメソッドは WU_E_INVALID_OPERATION を返します。

vtbl 13 HRESULT SetOption(LPWSTR optionName, VARIANT optionValue)

サービス ID を指定するオブジェクトのオプションを設定します。SetOption メソッドは、自動更新の登録を変更するときに警告を表示するかどうかを決定するためにも使用されます。

optionNameLPWSTRin

オブジェクトに提供するサービス ID の形式を指定するには、このパラメーターを AllowedServiceID に設定します。

自動更新の登録を変更するときに警告を表示するには、AllowWarningUI に設定します。

optionValueVARIANTin

optionName パラメーターが AllowServiceID に設定されている場合、optionValue パラメーターには、VT_BSTR 値として提供されるサービス ID を設定します。

optionName が AllowWarningUI に設定されている場合、optionValue は、自動更新の登録を変更するときに警告を表示するかどうかを指定する VT_BOOL 値です。

警告 UI を表示するには、optionValue パラメーターを VARIANT_TRUE に設定します。警告 UI を抑制するには、VARIANT_FALSE に設定します。

戻り値

成功した場合は S_OK を返します。それ以外の場合は、COM または Windows の

エラーコードを返します。

戻り値 説明
WU_E_INVALID_OPERATION
コンピューターは更新プログラムサイトへのアクセスを許可されていません。
E_INVALIDARG
メソッドの引数が無効です。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IUpdateServiceManager "{23857E3C-02BA-44A3-9423-B1C900805F37}"
#usecom global IUpdateServiceManager IID_IUpdateServiceManager "{F8D253D9-89A4-4DAA-87B6-1168369F0B21}"
#comfunc global IUpdateServiceManager_get_Services             7 sptr
#comfunc global IUpdateServiceManager_AddService               8 wstr,wstr,sptr
#comfunc global IUpdateServiceManager_RegisterServiceWithAU    9 wstr
#comfunc global IUpdateServiceManager_RemoveService            10 wstr
#comfunc global IUpdateServiceManager_UnregisterServiceWithAU  11 wstr
#comfunc global IUpdateServiceManager_AddScanPackageService    12 wstr,wstr,int,sptr
#comfunc global IUpdateServiceManager_SetOption                13 wstr,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。