更新Windows Update代理程式

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

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

Windows Update Agent (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 來執行下載的安裝程式。