共用方式為


更新 Windows Update 代理程式

Windows Update 代理程式 (WUA) 會透過各種方式自行更新,視裝置上執行的 Windows 版本而定。 舊版 WUA 可能無法連線到目前的更新服務、可能無法與所有更新相容,而且可能不支援所有記載的 API。 以下說明如何確保 WUA 已完整更新且相容。

從 Windows 7 和 Windows Server 2008 R2 開始的 Windows 版本

Windows Update 代理程式 (WUA) 更新包含在透過 Windows Update 或 Windows Server Update Services (WSUS) 發佈的 Windows 定期更新中。 您不需要採取任何特殊步驟來更新這些 Windows 版本上的 WUA。

Windows 7 和 Windows Server 2008 R2 之前的 Windows 版本

當自動更新連結至 Windows Update 或 WSUS 時,WUA 會自動更新自身。

如果自動更新尚未成功執行,執行這些 Windows 版本的裝置可能會執行不支援所有記載 API 的舊版 WUA。 如果您使用 WUA API 執行掃描、下載或安裝時收到WU_E_SELFUPDATE_REQUIRED結果,此錯誤會告訴您已安裝的 WUA 版本太舊,無法連線到目前的 Windows Update 服務。 您無法使用一般的 WUA API 來在這些作業系統上更新 WUA。

用戶可以開啟 Windows Update 控制面板,選取 [檢查更新],然後接受出現的自我更新,以手動將 WUA 更新更新為目前版本。 或者,您也可以透過程式設計來更新 WUA。

在 Windows 7 和 Windows Server 2008 R2 之前的 Windows 版本上,以程式設計方式進行 WUA 更新

  1. 使用 WinHTTP API 下載 Wuredist.cab
  2. 使用 密碼編譯函式 來確認下載的 Wuredist.cab 複本具有來自Microsoft的數字簽名。 如果您無法驗證數字簽名,請停止。
  3. 使用 檔案解壓縮介面 API,從 Wuredist.cab擷取 XML 檔案。
  4. 使用 Microsoft XML Core Services (MSXML) API 載入 XML 檔案,並找出計算機的架構 WURedist/StandaloneRedist/architecture 節點。 例如,針對 x86,找出具有 x86 名稱 屬性的 WURedist/StandaloneRedist/architecture 節點。
  5. 呼叫 IWindowsUpdateAgentInfo::GetInfo 以判斷目前版本的 WUA。 如果 IWindowsUpdateAgentInfo::GetInfo 傳回的版本號碼,至少與您找到的架構節點中的 clientVersion 屬性一樣高,請停止。
  6. 使用 MSXML API,從您找到的架構節點讀取 downloadUrl 屬性。 downloadUrl 提供適用於電腦架構的 WUA 安裝程式的下載 URL。
  7. 使用 WinHTTP API 下載適當的安裝程式。
  8. 使用 CreateProcess 函式或類似的 API 來執行下載的安裝程式。