Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Windows XP Embedded:透過裝置更新代理 (DUA) 部署 QFE 修補程式完整實作指南

編輯:XP 系統基礎知識

前言:嵌入式系統修補的特殊挑戰

Microsoft 承諾為嵌入式客戶提供 Windows 作業系統的關鍵修補程式。這些修補以「已更新的 SLD 元件」形式發布,匯入元件資料庫後,客戶下次設計或升級組態即可使用。然而,元件 QFE 無法直接套用至已部署裝置——這與 Windows XP Professional 的 QFE 機制截然不同。

Windows XP Embedded SP1 引入 裝置更新代理 (Device Update Agent, DUA) 元件,該服務運行於嵌入式裝置上,支援遠端維護與管理工作。搭配指令碼轉換器,可將 QFE 更新封裝並推送至目標裝置。

實作案例:部署 QFE Q323759 (IE 累積修補程式)

本文以 2002/08/22 釋出的 QFE Q323759(Microsoft Internet Explorer 累積修補程式)為例,示範完整部署流程。

> **重要限制**:QFE 僅適用於更新已部署系統中的現有元件,不適用於:新增元件至已部署裝置、受增強寫入篩選器 (EWF) 保護的裝置、離線映像檔。

階段一:下載與驗證

1. 下載 QFE 並檢視發行說明

「其他資訊」區段詳細列出該元件變更的二進位檔案與登錄機碼異動,是後續編寫更新指令碼的依據。

2. 驗證登錄設定並載入離線配置單元

修改登錄前必須了解目標裝置組態。分析離線組態映像,發出更新指令前先載入軟體配置單元:

  1. 開啟登錄編輯器 (regedit)
  2. 選取 HKEY_USERS 或 HKEY_LOCAL_MACHINE
  3. 「檔案」選單 → 「載入配置單元」
  4. 導航至離線執行階段映像的 \Windows\System32\Config,選取 SOFTWARE 檔案
  5. 點選「開啟」,輸入自訂機碼名稱(如 OfflineSoftware)
  6. 分析該配置單元,確認目標機碼/值是否存在;不存在則需先建立

階段二:建置含 DUA 的執行階段映像

1. 於目標設計器中新增 DUA 元件

  1. 開啟目標設計器,開啟或建立組態
  2. 新增「裝置更新代理」元件
  3. 為本案例,另新增「Internet Explorer」元件(QFE 針對此元件)

2. 設定 DUA 參數

設定項目本範例數值說明
Require HTTP Support✅ 勾選需透過 HTTP 從遠端 Web 伺服器下載更新
輪詢間隔30 秒測試階段設低值;正式環境視需求調整
Poll Jitter❌ 取消勾選避免所有裝置同時輪詢造成伺服器尖峰負載
Working DirectoryC:\dua\working指令檔執行期間的暫存目錄,不存在則自動建立
命令路徑類型Remote using HTTPDUA 透過 HTTP 輪詢遠端指令檔
主機名稱your-web-server僅輸入主機名,勿含協定前綴
完整指令檔路徑Cmdfiles\Qfe01.dup初始指令檔的相對路徑(拉機制必須指定)
Advanced Settings → 協定HTTP預設為 HTTPS,此處改為 HTTP
> **Web 伺服器備註**:需架設 Web 伺服器並建立 Cmdfiles 虛擬目錄,設定允許匿名瀏覽(因未提供帳號密碼)。

3. 建置並部署執行階段映像

完成上述設定後,即可建置映像並部署至目標嵌入式裝置。

階段三:撰寫裝置更新程式 (.dup) 指令碼

.dup 為編譯後的 DUA 指令碼 (.dus)。依據 QFE 發行說明的二進位檔案清單與登錄變更,編寫 Qfe01.dus:

QFE 更新的二進位檔案清單

  • Windows\System32\msHtml.dll
  • Windows\System32\shdoclc.dll
  • Windows\System32\shdocvw.dll
  • Windows\System32\url.dll
  • Windows\System32\urlmon.dll
  • Windows\System32\wininet.dll

指令碼結構說明

  1. HTTPGET 指令:從 Web 伺服器下載各 DLL 至工作目錄 (%systemdrive%\dua\working\)
  2. MOVEFILE 指令 + DAMOVEFILE_DELAY_UNTIL_REBOOT:標記重開機時將檔案移至 %System32% 覆寫舊版
  3. REGSETVALUE 指令:立即更新登錄機碼值(重開機前生效)

關鍵指令碼片段(節錄)

// 下載 QFE 二進位檔案(需將 myhostname 替換為實際 Web 伺服器主機名)
HTTPGET,0,,myhostname,,cmdfiles/Q323759/Q323759_msHtml.dll,1,%systemdrive%\dua\working\msHtml.dll,1
HTTPGET,0,,myhostname,,cmdfiles/Q323759/Q323759_shdoclc.dll,1,%systemdrive%\dua\working\shdoclc.dll,1
...(其餘 4 個 DLL 同理)...

// 重開機時移動檔案到 System32 覆寫
MOVEFILE,0,1,%systemdrive%\dua\working\mshtml.dll,1,%System32%\msHtml.dll,DAMOVEFILE_DELAY_UNTIL_REBOOT
MOVEFILE,0,1,%systemdrive%\dua\working\shdoclc.dll,1,%System32%\shdoclc.dll,DAMOVEFILE_DELAY_UNTIL_REBOOT
...(其餘 4 個 DLL 同理)...

// 更新登錄機碼值(假設機碼已存在)
// HKLM\Software\Microsoft\Active Setup\Installed Components\{61E6EAE5-7821-4AC1-9BBD-AED032A8E273}
REGSETVALUE,0,HKEY_LOCAL_MACHINE,0,SOFTWARE\Microsoft\Active Setup\Installed Components\{61E6EAE5-7821-4AC1-9BBD-AED032A8E273},0,,DAREG_SZ,Q323759
REGSETVALUE,0,HKEY_LOCAL_MACHINE,0,SOFTWARE\Microsoft\Active Setup\Installed Components\{61E6EAE5-7821-4AC1-9BBD-AED032A8E273},0,IsInstalled,DAREG_DWORD_LITTLE_ENDIAN,1
REGSETVALUE,0,HKEY_LOCAL_MACHINE,0,SOFTWARE\Microsoft\Active Setup\Installed Components\{61E6EAE5-7821-4AC1-9BBD-AED032A8E273},0,Version,DAREG_SZ,6,0,2719,2200
REGSETVALUE,0,HKEY_LOCAL_MACHINE,0,SOFTWARE\Microsoft\Active Setup\Installed Components\{61E6EAE5-7821-4AC1-9BBD-AED032A8E273},0,Locale,DAREG_SZ,EN
...(Internet Settings 相關機碼同理)...
> **注意**: > - 指令碼中 myhostname 必須替換為實際 Web 伺服器主機名 > - 登錄機碼若不存在,需先用 REGCREATEKEY 建立(參閱 DUA 產品文件) > - 檔案移動僅在重開機時發生;登錄變更即時生效

4. 編譯與部署指令碼

  1. 使用指令碼轉換器將 Qfe01.dus 編譯為 Qfe01.dup
  2. 將 Qfe01.dup 與 7 個 DLL 檔案置於 Web 伺服器的 Cmdfiles\ 目錄下(結構:Cmdfiles\Qfe01.dup、Cmdfiles\Q323759\*.dll)
  3. 目標裝置下次輪詢時自動下載並執行更新

總結

透過 DUA 的拉機制,嵌入式裝置可在無人值守情況下自動套用 QFE 修補程式。關鍵在於:預先在映像中納入 DUA 元件、正確設定 HTTP 輪詢參數、依據 QFE 發行說明精確編寫下載/移動/登錄指令碼。此流程雖較桌面版 Windows Update 複雜,卻是嵌入式系統生命週期管理中不可或缺的安全維護手段。

Copyright © Windows教程網 All Rights Reserved