# ProgramData 資料夾是什麼，哪些能刪

`C:\ProgramData` 是 Windows 上的隱藏資料夾，程式把這台電腦上所有帳號共用的資料放在這裡：授權、設定、更新快取和資料庫。不要刪除這個資料夾，也不要大批清除，因為安全軟體、Windows 功能和安裝程式都依賴它。舊的錯誤報告，以及你確實已經移除的程式留下的資料夾，確認過後通常可以刪。其他的最好交給該程式自己的解除安裝程式或設定。

## 裡面有什麼

Microsoft 把它定義為[已知資料夾](https://learn.microsoft.com/en-us/windows/win32/shell/knownfolderid)，環境變數是 `%ProgramData%`。它預設是隱藏的，所以在 `Win + R` 輸入 `%ProgramData%` 就能直接進去，或到 **檔案總管 › 檢視 › 顯示 › 隱藏的項目** 打開。

和 AppData 的差別：[AppData](/tw/windows/blog/appdata-folder-what-can-delete) 屬於單一帳號，ProgramData 屬於全部帳號。在一台測試用 ThinkPad 上，這個資料夾裡有 `Intel`、`Lenovo`、`Tencent` 這類廠商資料夾，還有 `Microsoft`、`Package Cache` 和 `ssh`。

你也會看到帶箭頭的項目，例如 `Application Data` 和 `Documents`。這些是為舊程式保留的連結，不是真正的資料夾。在那台電腦上，`Application Data` 指回 `C:\ProgramData`，`Documents` 指向 `C:\Users\Public\Documents`。所以跟著連結走的工具，可能把同一份資料算兩次甚至更多次。

## 找出是什麼占了空間

下面的指令會列出最大的幾個資料夾。以系統管理員身分執行 PowerShell，被拒絕存取的資料夾會少一些：

```powershell
Get-ChildItem $env:ProgramData -Directory -Force -Attributes !ReparsePoint | ForEach-Object {
  [pscustomobject]@{ GB = [math]::Round((Get-ChildItem $_.FullName -Recurse -Force -File -Attributes !ReparsePoint -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum / 1GB, 2); Folder = $_.Name }
} | Sort-Object GB -Descending | Select-Object -First 15
```

## 哪些能刪，哪些不能

| `C:\ProgramData` 底下的路徑 | 是什麼 | 能不能刪 |
| --- | --- | --- |
| `Microsoft\Windows\WER\ReportArchive`、`ReportQueue` | 舊的錯誤報告 | 可以，需要系統管理員權限 |
| `NVIDIA Corporation\NV_Cache` | Shader 快取 | 可以，遊戲會重新編譯，見 [shader 快取](/tw/windows/blog/directx-shader-cache-windows) |
| 你已移除的程式的資料夾 | 殘留資料 | 通常可以，先確認名稱，並確認沒有該廠商的其他產品還裝著 |
| `Package Cache` | 為修復和移除而保留的安裝程式 | 不行，見 [Installer 資料夾](/tw/windows/blog/windows-installer-folder-cleanup) |
| `Microsoft\Windows Defender` | 安全性資料 | 不行 |
| `Microsoft\Crypto` | 電腦金鑰和憑證 | 不行 |
| `Microsoft\Windows\Start Menu` | 所有帳號的捷徑 | 不行，失效的捷徑除外 |
| `ssh` | OpenSSH 伺服器的主機金鑰 | 不行 |
| `Microsoft\Windows\Virtual Hard Disks` | Hyper-V 磁碟 | 只能透過 Hyper-V |
| `chocolatey`、`miniconda3`、其他套件管理員 | 已安裝的工具 | 用該工具來移除套件 |
| 你還在用的硬體的廠商資料夾 | 驅動程式、工具、授權 | 不行，用廠商的 App |
| 你還在用的程式的任何資料 | 常是授權和資料庫 | 不行 |

在移除殘留資料夾之前，到 **設定 › 應用程式 › 已安裝的應用程式** 看看有沒有該廠商的其他東西。`Adobe` 或 `Tencent` 這類發行者資料夾可能由好幾個產品共用。先把它移到別的地方，或改名，再用這台電腦幾天。在你確定之前，自己留一份備份。

## 不要這樣做

- 不要刪除 `C:\ProgramData` 或它的 `Microsoft` 資料夾。Windows 功能、Defender 和安裝程式會壞掉，而且很難修復。
- 不要為了能刪資料夾而取得它的擁有權。這表示你正要移除受保護的東西，改過的權限本身也會帶來問題。
- 不要把 ProgramData 搬到另一個磁碟。Windows 沒辦法在已安裝的電腦上搬動它，而且 Microsoft 警告，重新導向可能讓更新和升級失敗。
- 如果工具會跟著連結走，不要相信它算出的資料夾總量。請用上面的指令量。

## Mole 能幫上什麼

Mole for Windows 的「分析」可以顯示系統磁碟上的 `ProgramData` 和它的大小，並對 `Package Cache`、`WER` 這類已知資料夾附上說明。裡面的任何項目都不提供「移到資源回收筒」。在這裡移除刻意不做成一鍵就能完成。「清理」會從這裡列出系統錯誤報告和 NVIDIA 的系統 shader 快取，後者預設不勾選，兩者都需要系統管理員權限。它也能列出所有帳號「開始」功能表裡失效的捷徑。透過「軟體」解除安裝 App 時，Mole 可以把該 App 在 `ProgramData` 裡自己的資料夾列出供你檢視，並且只做到發行者資料夾為止，不會移除與其他產品共用的那一個。Mole 從不清理 `Package Cache`。

## 常見問題

### ProgramData 資料夾是什麼？

它是位於 `C:\ProgramData` 的隱藏資料夾，放著程式在這台電腦所有帳號之間共用的資料，例如授權、設定和快取。

### 可以刪除 ProgramData 嗎？

不行。只移除你確認過的項目，例如舊的錯誤報告，或你已移除的程式的資料夾。

### ProgramData 為什麼這麼大？

通常是一兩個程式造成的：安裝程式快取、防毒軟體資料、更新檔或套件管理員。決定之前先量一下各個資料夾。

### 為什麼我看不到 ProgramData？

它是隱藏的。在 `Win + R` 輸入 `%ProgramData%`，或在檔案總管打開 **檢視 › 顯示 › 隱藏的項目**。

### ProgramData 和 AppData 有什麼差別？

AppData 屬於單一帳號，ProgramData 由這台電腦上的所有帳號共用。兩者都是隱藏的，而且都把快取和你需要的資料混在一起。


Canonical: https://mole.fit/tw/windows/blog/programdata-folder-windows
