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 Update 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 | =, != | 尋找特定類型的更新,例如 「'Driver'」 和 「'Software'」。 |
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 Update自動選取的更新。 「AutoSelectOnWebSites=0」 會尋找未標示為自動更新的更新。 |
UpdateID | string (UUID) | =, != |
尋找 UpdateIdentity.UpdateID 屬性值符合指定值的更新。 可以搭配 != 運算子使用,以尋找沒有指定值 之 UpdateIdentity.UpdateID 的所有更新。
例如,「UpdateID='12345678-9abc-def0-1234-56789abcdef0'」 會尋找等於 12345678-9abc-def0-1234-56789abcdef0 的 UpdateIdentity.UpdateID 。 例如,「UpdateID!='12345678-9abc-def0-1234-56789abcdef0'」 會尋找 UpdateIdentity.UpdateID 不等於 12345678-9abc-def0-1234-56789abcdef0 的更新。 注意 RevisionNumber 子句可以與包含 = (相等) 運算子的 UpdateID 子句結合。 不過,RevisionNumber 子句不能與包含 != (不等於) 運算子的 UpdateID 子句結合。
例如,「UpdateID='12345678-9abc-def0-1234-56789abcdef0' 和 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.IncludePotentiallySupersedUpdates 屬性設定為 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 )
若要使用 UpdateSearcher.IncludePotentiallySupersedUpdates 屬性設定為 VARIANT_TRUE) 尋找所有隱藏 (更新,請使用下列準則:
( IsHidden = 1 )
規格需求
最低支援的用戶端 | Windows XP、Windows 2000 Professional 與 SP3 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003、Windows 2000 Server 與 SP3 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | wuapi.h |
程式庫 | Wuguid.lib |
Dll | Wuapi.dll |