IUpdateServiceManager2::AddService2 方法 (wuapi.h)

将服务注册到 Windows 更新 代理 (WUA) ,而无需 (.cab) 授权柜文件。 此方法还返回指向 IUpdateServiceRegistration 接口的 指针。

语法

HRESULT AddService2(
  [in]  BSTR                       serviceID,
  [in]  LONG                       flags,
  [in]  BSTR                       authorizationCabPath,
  [out] IUpdateServiceRegistration **retval
);

参数

[in] serviceID

要注册的服务的标识符。

[in] flags

使用按位 OR 操作组合的 AddServiceFlag 值的组合。 生成的值指定服务注册的选项。 有关详细信息,请参阅备注。

[in] authorizationCabPath

Microsoft 签名的本地文件文件的路径 (.cab) ,其中包含服务注册所需的信息。 如果为空,则当网络连接可用时,更新代理会在服务注册期间 (.cab) 搜索授权柜文件。

[out] retval

指向表示已添加服务的 IUpdateServiceRegistration 接口的指针。

返回值

如果成功,则返回 S_OK 。 否则,返回 COM 或 Windows 错误代码。

此方法还可以返回以下错误代码。

返回代码 说明
E_INVALIDARG
参数值无效。
E_ACCESSDENIED
如果将 authorizationCabPath 参数设置为 null 字符串,则无法从远程计算机调用此方法。
WU_E_DS_SERVICEEXPIRED
授权柜文件 (.cab) 已过期。
WU_E_DS_INVALIDOPERATION
无法更改自动汇报的状态。

注解

指定 asfAllowOnlineRegistration 标志时,此方法可能会返回网络错误代码

authorizationCabPath 参数对于此方法是可选的。 如果未指定 authorizationCabPath 参数,将从Windows 更新服务器检索它。

如果指定了 asfAllowOnlineRegistrationasfAllowPendingRegistration 标志,并且 authorizationCabPath 参数的值不是空字符串,则此方法将返回E_INVALIDARG

如果自动汇报状态中请求的更改与指定 asfRegisterServiceWithAU 标志时授权文件 (.cab) 中的规范相反,此方法将返回WU_E_DS_INVALIDOPERATION。 如果授权文件柜文件尚未签名, WinVerifyTrust 函数将返回错误。

更新代理和 AddService2 的行为方式如下,具体取决于在 flags 参数中指定的 AddServiceFlag 值:

  • 如果指定 asfAllowOnlineRegistration 而不指定 asfAllowPendingRegistration,更新代理会立即尝试联机注册服务。 AddService2 返回一个 HRESULT 值,该值反映注册的成功或失败。 如果注册失败,更新代理将来不会尝试注册服务。
  • 如果指定 asfAllowPendingRegistration 而不 指定 asfAllowOnlineRegistration,则更新代理不会立即注册服务。 AddService2 返回S_OK,指示更新代理将在以后尝试注册服务,这并不能保证注册最终会成功。
  • 如果同时指定 asfAllowPendingRegistrationasfAllowOnlineRegistration ,更新代理会立即尝试联机注册服务。 如果注册成功,AddService2 将返回S_OK。 如果注册失败,AddService2 将返回失败的 HRESULT 值,但更新代理仍会在以后尝试注册该服务。
  • 如果指定 asfAllowPendingRegistration 和/或 asfAllowOnlineRegistration,则还会为 authorizationCabPath 参数指定 NULL
  • 如果指定 asfAllowPendingRegistrationasfAllowOnlineRegistration (,则如果标志为零或 asfRegisterServiceWithAU) ,则必须在 authorizationCabPath 参数中指定非 NULL 路径。 在此模式下, AddService2 处理 (.cab) 的内阁文件,并使用 与 IUpdateServiceManager::AddService 相同的方式注册服务。
  • 如果指定 asfRegisterServiceWithAU,则对默认自动汇报服务的更改不会 (发生,并且不会反映在Windows 更新用户界面) ,直到服务注册成功。 这意味着,如果注册因指定 asfAllowPendingRegistration 或 (.cab) ) 提供了一个内阁文件而立即成功 (,则自动汇报服务更改也会立即发生。 如果注册直到稍后 (因为指定了 asfAllowPendingRegistration) 而未成功,则自动汇报服务更改不会发生,除非挂起的服务注册最终成功。

要求

要求
最低受支持的客户端 Windows XP、Windows 2000 Professional 和 SP3 [仅限桌面应用]
最低受支持的服务器 Windows Server 2003、Windows 2000 Server SP3 [仅限桌面应用]
目标平台 Windows
标头 wuapi.h
Library Wuguid.lib
DLL Wuapi.dll

另请参阅

IUpdateServiceManager2