IUpdateServiceManager
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
Windows Update Agent または自動更新に対する更新プログラムサービスの登録を追加または削除します。(IUpdateServiceManager)
解説(Remarks)
このインターフェイスのインスタンスは、UpdateServiceManager コクラスを使用して作成できます。オブジェクトを作成するには、プログラム識別子 Microsoft.Update.ServiceManager を使用します。
メソッド 7
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
WUA に登録されているサービスの IUpdateServiceCollection を取得します。
| retval | IUpdateServiceCollection** | out | 登録されている更新サービスのコレクションを受け取る IUpdateServiceCollection へのポインタである。 |
サービスを Windows Update Agent (WUA) に登録します。
| serviceID | LPWSTR | in | 登録するサービスの識別子。 |
| authorizationCabPath | LPWSTR | in | サービスの登録に必要な情報を格納した、Microsoft の署名付きローカルキャビネットファイルのパス。 |
| retval | IUpdateService** | out | 追加されたサービスを表す IUpdateService インターフェイス。 |
戻り値
成功した場合は S_OK を返します。それ以外の場合は、COM または Windows のエラーコードを返します。
このメソッドは、次のエラーコードを返すこともあります。
| 戻り値 | 説明 |
|---|---|
| パラメーターの値が無効です。 | |
| このメソッドはリモートコンピューターから呼び出すことはできません。 | |
| 認証 Cab の有効期限が切れています。 | |
| 自動更新の状態を変更できませんでした。 |
解説(Remarks)
要求された自動更新の状態変更が認証 Cab の仕様に反する場合、このメソッドは WU_E_DS_INVALIDOPERATION を返します。認証 Cab が署名されていない場合は、WinVerifyTrust によってエラーが返されます。
サービスを自動更新に登録します。
| serviceID | LPWSTR | in | 登録するサービスの識別子。 |
戻り値
成功した場合は S_OK を返します。それ以外の場合は、COM または Windows のエラーコードを返します。
このメソッドは、次のエラーコードを返すこともあります。
| 戻り値 | 説明 |
|---|---|
| パラメーターの値が無効です。 | |
| このメソッドはリモートコンピューターから呼び出すことはできません。 | |
| 不明なサービスを登録しようとしました。 | |
| Windows Update サービスを削除できませんでした。 | |
| コンピューターが更新プログラムサイトにアクセスできなかったか、自動更新の状態を変更できませんでした。 |
解説(Remarks)
登録するサービスが自動更新にとって不明な場合、このメソッドは WU_E_DS_UNKNOWNSERVICE を返します。
無効なサービス ID を指定してこのメソッドを呼び出した場合、WU_E_INVALID_OPERATION を返します。また、サービス ID が有効であってもサービスを自動更新に登録できない場合も WU_E_INVALID_OPERATION を返します。つまり、要求された自動更新の状態変更が認証キャビネットファイルの仕様に反する場合です(たとえば CanRegisterWithAU プロパティが FALSE に設定されている場合)。認証キャビネットファイルが署名されていない場合は、WinVerifyTrust 関数によってエラーが返されます。
Windows Update サービスを削除しようとした場合、このメソッドは WU_E_DS_NEEDWINDOWSSERVICE を返します。
Windows Update Agent (WUA) からサービスの登録を削除します。
| serviceID | LPWSTR | in | 登録を解除するサービスの識別子。 |
戻り値
成功した場合は S_OK を返します。それ以外の場合は、COM または Windows のエラーコードを返します。このメソッドは、次のエラーコードを返すこともあります。
| 戻り値 | 説明 |
|---|---|
| パラメーターの値が無効でした。 | |
| このメソッドはリモートコンピューターから呼び出すことはできません。 | |
| Windows Update サービスを削除できませんでした。 | |
| 自動更新の状態を変更できませんでした。このエラーは、サービスを削除しようとした場合に返されます。 | |
| 不明なサービスを登録または削除しようとしました。 |
サービスの自動更新への登録を解除します。
| serviceID | LPWSTR | in | 登録を解除するサービスの識別子。 |
戻り値
成功した場合は S_OK を返します。それ以外の場合は、COM または Windows のエラーコードを返します。
このメソッドは、次のエラーコードを返すこともあります。
| 戻り値 | 説明 |
|---|---|
| パラメーターの値が無効です。 | |
| このメソッドはリモートコンピューターから呼び出すことはできません。 | |
| Windows Update サービスを削除できませんでした。 | |
| 自動更新の状態を変更できませんでした。 | |
| 不明なサービスを登録しようとしました。 | |
| コンピューターが更新プログラムサイトにアクセスできませんでした。 | |
| ユーザーが変更をキャンセルしました。 |
解説(Remarks)
要求された自動更新の状態変更が認証 Cab の仕様に反する場合、このメソッドは WU_E_DS_INVALIDOPERATION を返します。認証 Cab が署名されていない場合は、WinVerifyTrust 関数によってエラーが返されます。
削除するサービスが存在しない場合、このメソッドは WU_E_DS_UNKNOWNSERVICE を返します。
Windows Update サービスを削除しようとし、かつそれが自動更新に登録されている唯一のサービスである場合、このメソッドは WU_E_DS_NEEDWINDOWSSERVICE を返します。
スキャンパッケージをサービスとして Windows Update Agent (WUA) に登録し、IUpdateService インターフェイスを返します。
| serviceName | LPWSTR | in | スキャンパッケージサービスのわかりやすい名前。 |
| scanFileLocation | LPWSTR | in | サービスとして登録する、Microsoft の署名付きスキャンファイルのパス。 |
| flags | INT | in | スキャンパッケージのサービス登録を削除する方法を決定します。 指定可能な値については、UpdateServiceOption を参照してください。 |
| ppService | IUpdateService** | out | サービス登録情報を格納した IUpdateService インターフェイスへのポインター。 |
戻り値
成功した場合は S_OK を返します。それ以外の場合は、COM または Windows のエラーコードを返します。このメソッドは、次のエラーコードを返すこともあります。
| 戻り値 | 説明 |
|---|---|
| パラメーターの値が無効です。 | |
| このメソッドはリモートコンピューターから呼び出すことはできません。 | |
| コンピューターが更新プログラムサイトにアクセスできませんでした。 |
解説(Remarks)
サービスの ID を IUpdateSearcher インターフェイスの ServiceID プロパティとして渡すことで、検索で使用できます。
リソースを解放するには、不要になったサービスを削除してください。サービスを削除するには、RemoveService メソッドを使用します。
AddScanPackageService メソッドが登録したサービスに対しては、RegisterServiceWithAU メソッドを呼び出さないでください。
AddScanPackageService によって返されるサービスは、IUpdateServiceManager インターフェイスの Services プロパティが返すサービスのコレクションに含まれます。このサービスには特別な IsScanPackageService プロパティがあります。
認証 Cab が署名されていない場合は、WinVerifyTrust によってエラーが返されます。
インターフェイスを実装するオブジェクトがロックダウンされている場合、このメソッドは WU_E_INVALID_OPERATION を返します。
サービス ID を指定するオブジェクトのオプションを設定します。SetOption メソッドは、自動更新の登録を変更するときに警告を表示するかどうかを決定するためにも使用されます。
| optionName | LPWSTR | in | オブジェクトに提供するサービス ID の形式を指定するには、このパラメーターを AllowedServiceID に設定します。 自動更新の登録を変更するときに警告を表示するには、AllowWarningUI に設定します。 |
| optionValue | VARIANT | in | optionName パラメーターが AllowServiceID に設定されている場合、optionValue パラメーターには、VT_BSTR 値として提供されるサービス ID を設定します。 optionName が AllowWarningUI に設定されている場合、optionValue は、自動更新の登録を変更するときに警告を表示するかどうかを指定する VT_BOOL 値です。 警告 UI を表示するには、optionValue パラメーターを VARIANT_TRUE に設定します。警告 UI を抑制するには、VARIANT_FALSE に設定します。 |
戻り値
成功した場合は S_OK を返します。それ以外の場合は、COM または Windows の
エラーコードを返します。
| 戻り値 | 説明 |
|---|---|
| コンピューターは更新プログラムサイトへのアクセスを許可されていません。 | |
| メソッドの引数が無効です。 |
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 不要)。