iUpdateSearcher::Search 方法 (wuapi.h)
对更新执行同步搜索。 搜索使用当前配置的搜索选项。
语法
HRESULT Search(
[in] BSTR criteria,
[out] ISearchResult **retval
);
参数
[in] criteria
一个指定搜索条件的字符串。
[out] retval
包含以下项的 ISearchResult 接口:
- 操作的结果
- 与搜索条件匹配的更新集合
返回值
如果成功 , 则返回S_OK。 否则,将返回 COM 或 Windows 错误代码。
此方法还可以返回以下错误代码。
返回代码 | 说明 |
---|---|
|
如果 IUpdateSearcher 接口的 ServerSelection 属性设置为 ssManagedServer 或 ssDefault,并且计算机上的托管服务器是 Microsoft 软件更新服务 (SUS) 1.0 服务器,则无法搜索更新。 |
|
参数值无效或 为 NULL。 |
|
搜索条件无效。 |
注解
用于 criteria 参数的字符串必须与 Search 方法的自定义搜索语言匹配。 字符串由评估以确定要返回的更新的条件组成。
每个条件指定更新属性名称和值。 如果存在一些限制,则可以将多个条件与 AND 和 OR 运算符连接。 支持 = (等于) 和 != (不相等) 运算符。 使用 Windows 更新 Agent (WUA) 时,!= (不相等) 运算符只能与类型条件一起使用。
搜索条件语法基于 SQL 查询表达式的 WHERE 子句。 大多数受支持的条件直接映射到更新属性。 这些更新属性类似于包含整个服务器目录的虚拟 XML 文档中的元素。 例如,如果指定搜索条件字符串“AutoSelectOnWebSites = 1”,则搜索将返回具有 AutoSelectOnWebSites 属性 且值为 VARIANT_TRUE 的所有更新。
单个条件由“Name = Value”或“Name != Value”组成,其中“Name”是受支持的条件名称之一,“Value”是字符串或整数。 AND 和 OR 运算符可用于连接多个条件。 但是, OR 只能在搜索条件的顶层使用。 因此,“ (x=1 且 y=1) 或 (z=1) ”有效,但“ (x=1) 且 (y=1 或 z=1) ”无效。
支持的值类型为整数和字符串。 必须以 10 为底数指定整数,负数以减号为前缀, (-) 。 字符串必须转义并用单引号括起来, (') 。 除非指定,否则所有字符串比较不区分大小写。
下表按评估优先级顺序标识了所有公共支持条件。 将来可能会向此列表添加更多条件。
条件 | 类型 | 允许的操作 | 说明 |
---|---|---|---|
类型 | string | =, != | 查找特定类型的更新,例如“驱动程序”和“软件”。 |
DeploymentAction | string | = |
查找为特定操作(例如服务器管理员指定的安装或卸载)部署的更新。
“DeploymentAction='Installation'” 查找部署在目标计算机上安装的更新。 “DeploymentAction='Uninstallation'”取决于其他查询条件。 “DeploymentAction='Uninstallation'” 查找在目标计算机上为卸载而部署的更新。 “DeploymentAction='Uninstallation'”取决于其他查询条件。 如果未显式指定此条件,则联接到 AND 运算符的每组条件都意味着“DeploymentAction='Installation'”。 |
IsAssigned | int (bool) | = |
查找用于自动汇报部署的更新。
“IsAssigned=1”查找由自动汇报部署的更新,具体取决于其他查询条件。 对于目标计算机上的每个本地设备,最多会返回一个分配的基于 Windows 的驱动程序更新。 “IsAssigned=0”查找不应由自动汇报部署的更新。 |
BrowseOnly | int (bool) | = |
“BrowseOnly=1”查找被视为可选的更新。
“BrowseOnly=0”查找不被视为可选的更新。 |
AutoSelectOnWebSites | int (bool) | = |
查找 AutoSelectOnWebSites 属性具有指定值的更新。
“AutoSelectOnWebSites=1”查找标记为由Windows 更新自动选择的更新。 “AutoSelectOnWebSites=0”查找未标记为自动汇报的更新。 |
UpdateID | 字符串 (UUID) | =, != |
查找 UpdateIdentity.UpdateID 属性的值与指定值匹配的更新。 可与 != 运算符一起使用,以查找没有指定值的 UpdateIdentity.UpdateID 的所有更新。
例如,“UpdateID='12345678-9abc-def0-1234-56789abcdef0'”查找等于 12345678-9abc-def0-1234-56789abcdef0 的 UpdateId 的 更新。 例如,“UpdateID!='12345678-9abc-def0-1234-56789abcdef0'”查找不等于 12345678-9abc-def0-1234-56789abcdef0 的 UpdateIdentity.UpdateID 的更新。 注意 RevisionNumber 子句可以与包含 = (等于) 运算符的 UpdateID 子句结合使用。 但是,RevisionNumber 子句不能与包含 != (不相等) 运算符的 UpdateID 子句组合使用。
例如,“UpdateID='12345678-9abc-def0-1234-56789abcdef0' and RevisionNumber=100” 可用于查找 Update 的更新 等于 12345678-9abc-def0-1234-56789abcdef0 且其 UpdateIdentity.RevisionNumber 等于 100 的Identity.UpdateID 。 |
RevisionNumber | int | = |
查找 UpdateIdentity.RevisionNumber 属性的值与指定值匹配的更新。
例如,“RevisionNumber=2”查找 UpdateIdentity.RevisionNumber 等于 2 的更新。 此条件必须与 UpdateID 属性结合使用。 |
CategoryIDs | string (uuid) | contains | 查找属于指定类别的更新。 |
IsInstalled | int (bool) | = |
查找 目标 计算机上安装的更新。
“IsInstalled=1”查找安装在目标计算机上的更新。 “IsInstalled=0”查找未安装在目标计算机上的更新。 |
IsHidden | int (bool) | = |
查找在目标计算机上标记为 隐藏 的更新。
“IsHidden=1”查找在目标计算机上标记为隐藏的更新。 使用此子句时,可以将 UpdateSearcher.IncludePotentiallySupersededUpdates 属性设置为 VARIANT_TRUE ,以便搜索返回隐藏的更新。 隐藏的更新可能被同一结果中的其他更新取代。 “IsHidden=0”查找未标记为隐藏的更新。 如果 UpdateSearcher.IncludePotentiallySupersededUpdates 属性设置为 VARIANT_FALSE,则最好在搜索筛选器字符串中包含该子句,以便将隐藏更新取代的更新包含在搜索结果中。 VARIANT_FALSE 为默认值。 |
IsPresent | int (bool) | = |
当设置为 1 时,查找计算机上存在的更新。
“IsPresent=1”查找目标计算机上存在的更新。 如果更新对一个或多个产品有效,则如果为一个或多个产品安装了更新,则认为更新存在。 “IsPresent=0”查找未为目标计算机上任何产品安装的更新。 |
RebootRequired | int (bool) | = |
查找需要重启计算机才能完成安装或卸载的更新。
“RebootRequired=1”查找需要重启计算机才能完成安装或卸载的更新。 “RebootRequired=0”查找不需要重启计算机即可完成安装或卸载的更新。 |
搜索的默认搜索条件如下所示:
( IsInstalled = 0 and IsHidden = 0 )
若要使用设置为 VARIANT_TRUE) 的 UpdateSearcher.IncludePotentiallySupersedUpdates 属性 查找 ( 的所有隐藏更新,请使用以下条件:
( IsHidden = 1 )
要求
最低受支持的客户端 | Windows XP、Windows 2000 Professional SP3 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003、Windows 2000 Server SP3 [仅限桌面应用] |
目标平台 | Windows |
标头 | wuapi.h |
Library | Wuguid.lib |
DLL | Wuapi.dll |