WinSxS 資料夾看起來很大,到底能不能清
清理 C 槽時常會看到 C:\Windows\WinSxS 佔了好幾個 GB,有時比整個程式目錄還大。它在 Windows 資料夾裡,刪又刪不掉,於是常有人問它到底能不能動。能動,但只能交給 Windows 自己的工具,而且先要弄清那個數字裡有多少是真的佔用。
為什麼它看起來那麼大
WinSxS 是元件存放區。Windows 的元件都放在這裡。更新出問題時回復、修復損壞的系統檔案,靠的也是它。微軟的說明講了它顯得大的原因。很多檔案看起來同時在 System32 和 WinSxS 裡各有一份,磁碟上其實只存了一份,另一處是硬式連結。檔案總管這類按目錄累加的工具不認硬式連結,同一份資料就被算了兩次。
先量出真實開銷
以系統管理員身分開啟命令提示字元,執行:
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
輸出裡的幾列要分開看:
- Windows Explorer Reported Size of Component Store:檔案總管算出來的大小,沒有扣掉硬式連結。
- Actual Size of Component Store:扣掉硬式連結後的大小,但裡面還包括和 Windows 共用的檔案。
- Shared with Windows:在別處也能看到、系統正常執行要用的檔案,不算額外開銷。
- Backups and Disabled Features 和 Cache and Temporary Data:這兩項加起來才是元件存放區的額外開銷,也是清理能動到的部分。
- Component Store Cleanup Recommended:顯示 Yes 時,清理可能會有收穫。
微軟給的範例裡,檔案總管顯示 4.98 GB,真正的額外開銷只有 507 MB 左右。所以先量再清,免得為一個大半是共用檔案的數字折騰半天。
不要手動刪
微軟的警告很明確。從 WinSxS 裡刪檔案,或者把整個資料夾刪掉,可能讓電腦無法啟動,也裝不了更新。有些重要的系統檔案只存在這裡。拿到 TrustedInstaller 權限強行刪,結果也是一樣。
用 DISM 清理
Windows 自己會定期清。排程工作 StartComponentCleanup 在電腦閒置時執行,一個元件更新裝好至少 30 天後才移除它的舊版本,每次最多執行一小時。想現在就清,可以執行:
Dism.exe /Online /Cleanup-Image /StartComponentCleanup
微軟的清理說明講了它和排程工作的差別。舊版本元件會立刻刪除,沒有 30 天的等待,也沒有一小時的限制。
再加上 /ResetBase 會清得更多:
Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
它會移除每個元件所有被取代的舊版本。執行完以後,已經裝上的更新都不能再解除安裝,之後新裝的更新不受影響。能收回多少空間,要看上面那兩項開銷有多大,不是一個固定的數字。剛裝完一個大更新、還不確定穩不穩的時候,先別加這個參數。
| 命令 | 清理範圍 | 已裝更新能否解除安裝 |
|---|---|---|
/StartComponentCleanup |
被取代的舊版本元件 | 部分:剛刪掉的舊版本元件不能再回復 |
/StartComponentCleanup /ResetBase |
所有被取代的舊版本 | 不能再解除安裝 |
只有 /ResetBase 會讓所有已裝更新都不能再解除安裝。普通 /StartComponentCleanup 只是立刻刪掉舊版本元件,被它刪掉的那部分更新就失去回復路徑。
不想用命令列
磁碟清理裡點「清理系統檔案」,勾選「Windows 更新清理」,也能縮小元件存放區。微軟的說明裡同樣提到了這一項。不管用哪種方式,清完再跑一次分析命令對比前後的數字,比看檔案總管裡的大小更準。想接著排查別的佔用,可以看 C 槽空間分類排查 和 Windows 快取清理。系統暫存資料夾和安裝程式快取可以分別看 Windows 暫存資料夾清理 和 Windows Installer 資料夾。
常見問題
WinSxS 資料夾可以刪嗎?
不可以。微軟警告從 WinSxS 裡刪檔案可能讓 Windows 無法啟動或安裝更新。改用 DISM 清理。
為什麼 WinSxS 看起來比磁碟變化大得多?
很多檔案同時也存在於 System32。檔案總管把兩份都算進去,磁碟上只存了一份。想看實際佔用,用 DISM /Online /Cleanup-Image /AnalyzeComponentStore。
/ResetBase 會失去什麼?
執行後,所有已安裝的更新都不能再解除安裝。之後新裝的更新不受影響。
不想用命令列,怎麼清理?
磁碟清理 › 清理系統檔案 › Windows 更新清理 也能縮小元件存放區。清完再量一次。