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