# Windows 更新檔案怎麼刪，刪了會失去什麼

大家說的「Windows 更新檔案」其實不是一個資料夾。一台普通電腦上通常有四堆：元件存放區裡被取代的舊版本元件，`C:\Windows\SoftwareDistribution\Download` 裡的下載快取，功能更新以後留在 `C:\Windows.old` 的上一版系統，還有拿來和其他電腦分享更新的傳遞最佳化快取。它們各有各的清理入口，代價也差得很遠。有的刪了幾乎沒影響，有的刪了就再也回不到上一個 Windows 版本。

先給結論。要空間就用磁碟清理或設定裡的入口。`SoftwareDistribution` 留給修復卡住的更新，不當成省空間的地方。`Windows.old` 等新系統用穩了再刪。

## 四個位置，四種代價

| 位置 | 裡面是什麼 | 用什麼清理 | 清掉以後失去什麼 |
| --- | --- | --- | --- |
| Windows 更新清理 | 元件存放區裡已更新元件的舊版本 | 磁碟清理裡的「清理系統檔案」 | 這些元件提前失去回復餘地 |
| `SoftwareDistribution\Download` | Windows 更新下載下來的安裝套件 | 按微軟的重設步驟，先停止服務 | 還沒裝的更新要重新下載 |
| `Windows.old` | 升級前的那一版 Windows | 設定裡的暫存檔 | 修復頁裡的「返回」選項 |
| 傳遞最佳化快取 | 留著分享給別的電腦的更新和應用程式下載 | 磁碟清理，或者等它自己清 | 區域網路裡的其他電腦改從網際網路下載 |

<figure class="blog-diagram">
  <picture>
    <source media="(max-width: 900px)" srcset="/img/blog/windows-delete-windows-update-files-zh-mobile.webp" type="image/webp" width="768" height="1500">
    <img src="/img/blog/windows-delete-windows-update-files-zh.webp" width="1360" height="454" loading="lazy" alt="更新檔案各有代價">
  </picture>
  <figcaption>四類更新檔案放在不同位置，由不同的系統工具清理，失去的東西也各不相同。</figcaption>
</figure>

## 刪之前先量一下

開啟設定 › 系統 › 儲存空間，點「暫存檔」。Windows 會按類別列出大小。先看清更新相關的幾項到底佔了多少。如果 C 槽是被遊戲庫或者影片專案塞滿的，清幾百 MB 更新快取解決不了問題。

元件存放區那一塊，檔案總管給 `C:\Windows\WinSxS` 算出來的數字因為硬式連結會偏大很多。怎麼用 DISM 量出真實開銷，[WinSxS 清理那篇](/tw/windows/blog/winsxs-folder-cleanup-windows)已經講過，這裡不重複。

## 磁碟清理裡的「Windows 更新清理」

四種裡通常先試這一種。它仍會提前結束被清理元件的回復窗口：

1. 在工作列搜尋「磁碟清理」並開啟。
2. 選系統磁碟機，點確定。
3. 點「清理系統檔案」，再選一次系統磁碟機，點確定。
4. 勾選「Windows 更新清理」，點確定，再點「刪除檔案」。

[微軟的元件存放區說明](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/clean-up-the-winsxs-folder)寫明這一項會縮小元件存放區。Windows 平時也會按排程做類似的清理。一些元件的舊版本會保留一段時間，方便出問題時回復，過了這段時間再自動移除。自己動手清理只是把這一步提前了。

代價就是這段回復餘地。剛裝完一個大的累積更新，印表機、驅動程式和常用軟體還沒確認正常的時候，先等幾天再清。更激進的 DISM 參數 `/ResetBase` 會讓已裝的更新都不能再解除安裝。WinSxS 那篇講了它。用磁碟清理不需要碰它。

## SoftwareDistribution\Download 是修復用的，不是省空間用的

`C:\Windows\SoftwareDistribution\Download` 是 Windows 更新存放已下載安裝套件的地方。正常更新時由系統自己管理，大塊空間一般也不藏在這裡。清空它是給下載或安裝反覆失敗的更新做修復。微軟也是按修復步驟來介紹的。

[微軟的重設說明](https://learn.microsoft.com/en-us/troubleshoot/windows-client/installing-updates-features-roles/additional-resources-for-windows-update)先建議跑 Windows 更新疑難排解，還不行再手動處理。第一步是停掉佔用這些檔案的服務，免得一邊處理資料夾一邊有程式往裡寫。以系統管理員身分開啟命令提示字元：

```cmd
net stop bits
net stop wuauserv
net stop cryptsvc
```

微軟的做法是把資料夾改名而不是直接刪除，並且說明只有前面的重設步驟都沒解決問題時才做這一步：

```cmd
Ren %Systemroot%\SoftwareDistribution\DataStore DataStore.bak
Ren %Systemroot%\SoftwareDistribution\Download Download.bak
Ren %Systemroot%\System32\catroot2 catroot2.bak
```

處理完再把服務啟動回來：

```cmd
net start bits
net start wuauserv
net start cryptsvc
```

改名能把舊內容留到確認更新恢復正常為止。Windows 更新會建新的資料夾，重新下載還需要的部分。等設定 › Windows 更新裡能順利裝上更新，再刪掉那幾個 `.bak` 資料夾。同一篇文章裡還有一個「實在不行」的簡短寫法，會刪掉整個 `SoftwareDistribution`，連 `DataStore` 也一起刪，不只是下載內容。它被放在最後一步，就按最後一步對待。

最該避免的是 Windows 更新還在執行時直接刪這個資料夾。被佔用的檔案刪不掉，正在下載的內容也可能斷在一半。

Mole for Windows 的最佳化頁裡有一個範圍更窄的同類修復，叫「重設卡住的更新下載」。只有同一個更新在最近 30 天裡連續至少兩次安裝失敗才會出現。Windows 正在安裝更新或者等待重新啟動時不做。30 天內最多做一次。它會停掉 Windows 更新和 BITS，只清空 `Download` 資料夾，再把原來在執行的服務啟動回來。不動 `DataStore`、`catroot2`，也不改更新設定和原則。

## Windows.old 和 10 天期限

升級系統或者裝完功能更新以後，上一版系統會放在 `C:\Windows.old`。設定 › 系統 › 修復裡的「返回」就靠它。[微軟的退回說明](https://support.microsoft.com/windows/deployment/install-upgrade/go-back-to-the-previous-version-of-windows)寫著，大多數情況下有 10 天時間。想要退回，需要保留 `windows.old` 和 `$windows.~bt` 兩個資料夾，刪掉升級後新加的使用者帳戶。升級時用過 USB 隨身碟的話還要準備好那個隨身碟。退回會保留個人檔案，但升級後裝的軟體和驅動程式會被移除。

很多時候根本不用自己刪。[微軟的刪除說明](https://support.microsoft.com/en-us/windows/deployment/install-upgrade/delete-your-previous-version-of-windows)寫明升級 10 天後舊版本會被自動刪除。想提前刪，就去設定 › 系統 › 儲存空間 › 暫存檔，勾選「先前版本的 Windows」，點「刪除檔案」。同一頁也提醒了，刪了就不能復原。

動手之前，先把可能讓你想退回的事情過一遍。常用軟體能不能開啟，印表機能不能列印，VPN 能不能連上，在意的檔案是不是已經在自己的使用者資料夾裡，而不是只躺在 `Windows.old` 裡。文件備份替代不了這一步檢查，因為「返回」恢復的是系統，不是你的檔案。

## 傳遞最佳化快取

傳遞最佳化讓電腦可以從區域網路裡的其他電腦下載 Windows 更新和應用程式市集的更新。允許的話也可以從網際網路上的電腦下載，同時把自己下載過的內容分享出去。[微軟的傳遞最佳化說明](https://support.microsoft.com/en-us/windows/deployment/updates-lifecycle/delivery-optimization-in-windows)寫著，快取會在一小段時間後或者佔用太多空間時自動清理。想提前清，就在磁碟清理裡勾選「傳遞最佳化檔案」。

「一小段時間」具體是多久，[傳遞最佳化參考文件](https://learn.microsoft.com/en-us/windows/deployment/do/waas-delivery-optimization-reference)給了預設值。單一檔案最多保留三天，快取最多佔可用空間的 20%。清掉它代價很小。Windows 更新安裝用的是自己的下載。別的電腦會改從微軟下載，不再從你這裡拿。想改這台電腦要不要分享，去設定 › Windows 更新 › 進階選項 › 傳遞最佳化。

Mole 的清理頁會把這塊快取列成「傳遞最佳化檔案」。Mole 是請傳遞最佳化服務自己刪除已經下載完成的檔案。還在下載的和被固定保留的都不碰，也不會去取得這個服務資料夾的擁有權。

## 清完怎麼核對

- 再開啟一次磁碟清理或暫存檔，和清理前的各項大小對比。
- 開啟設定 › Windows 更新，點「檢查更新」，能正常搜尋和安裝。
- 開啟設定 › 系統 › 修復，刪掉 `Windows.old` 以後「返回」不見了是正常的。如果其實還需要它，已經找不回來了。

## 不要這樣做

- 不要手動刪 `WinSxS` 裡的檔案，也不要從 TrustedInstaller 手裡奪權強刪。
- 不要在 Windows 更新服務執行時刪 `SoftwareDistribution`，也不要把它當成日常清理空間的地方。
- 不要因為 `Windows.old` 大，升級後頭幾天就把它刪了。
- 不要為了讓這些資料夾別再變大就停用 Windows 更新或 BITS 服務。那樣安全性更新也一起停了。

C 槽還有別的東西在佔空間，可以接著看 [C 槽空間分類排查](/tw/windows/blog/windows-c-drive-full) 和 [找出大檔](/tw/windows/blog/find-large-files-on-windows)。元件存放區那一塊的取捨見 [WinSxS 資料夾清理](/tw/windows/blog/winsxs-folder-cleanup-windows)。給回復和檔案復原留後路的辦法見 [Windows 還原點和檔案備份](/tw/windows/blog/windows-restore-points-and-backups)。

## 常見問題

### Windows 更新檔案可以刪嗎？

可以，只要用 Windows 內建的入口：磁碟清理裡的「Windows 更新清理」和「傳遞最佳化檔案」，以及暫存檔裡的「先前版本的 Windows」。代價是元件更早失去回復餘地。刪 `Windows.old` 則表示不能再用「返回」。

### SoftwareDistribution 資料夾能刪嗎？

只建議在更新反覆失敗時當作修復來做，而且要先停掉 Windows 更新服務。微軟的步驟是把 `Download` 和 `DataStore` 改名而不是刪除，等更新恢復正常再刪掉改名後的複本。

### Windows.old 會在電腦上留多久？

大多數情況下是升級後 10 天，之後 Windows 會自動刪除它，「返回」選項也隨之消失。

### 刪除傳遞最佳化檔案會影響更新嗎？

不會。這些是留著分享給其他電腦的複本。Windows 更新再需要某個檔案時會從微軟下載。這塊快取本身過幾天也會自動清理。


Canonical: https://mole.fit/tw/windows/blog/delete-windows-update-files
