共用方式為


IUpdateSearcher::Search 方法 (wuapi.h)

執行同步搜尋更新。 搜尋會使用目前設定的搜尋選項。

語法

HRESULT Search(
  [in]  BSTR          criteria,
  [out] ISearchResult **retval
);

參數

[in] criteria

指定搜尋準則的字串。

[out] retval

包含下列各項的 ISearchResult 介面:

  • 作業的結果
  • 符合搜尋準則的更新集合

傳回值

如果成功 則傳回S_OK。 否則,會傳回 COM 或 Windows 錯誤碼。

這個方法也可以傳回下列錯誤碼。

傳回碼 描述
WU_E_LEGACYSERVER
如果IUpdateSearcher介面的ServerSelection屬性設定為ssManagedServerssDefault,而且電腦上的受管理伺服器是 Microsoft 軟體更新服務, (SUS) 1.0 伺服器,則無法搜尋更新。
E_POINTER
參數值無效或 Null
WU_E_INVALID_CRITERIA
搜尋準則無效。

備註

用於 criteria 參數的字串必須符合 Search 方法的自訂 搜尋 語言。 此字串是由評估為判斷要傳回之更新的準則所組成。

每個準則都會指定更新屬性名稱和值。 透過某些限制,多個準則可以與 ANDOR 運算子連線。 (= 相等) 和 != (不相等) 運算子都受到支援。 當您使用 Windows Update Agent (WUA) 時,!= (不等於) 運算子只能與類型準則搭配使用。

搜尋準則語法是以 SQL 查詢運算式的 WHERE 子句為基礎。 大部分支援的準則都會直接對應至更新屬性。 這些更新屬性類似于包含整個伺服器目錄之虛擬 XML 檔中的專案。 例如,如果您指定 「AutoSelectOnWebSites = 1」 的搜尋準則字串,則搜尋會傳回具有 AutoSelectOnWebSites 屬性且值為 VARIANT_TRUE的所有更新。

單一準則包含 「Name = Value」 或 「Name != Value」,其中 「Name」 是其中一個支援的準則名稱,而 「Value」 是字串或整數。 ANDOR運算子可用來連接多個準則。 不過, 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

另請參閱

IUpdateSearcher