# ProgramData フォルダーとは？ 何を削除できる？

`C:\ProgramData` は、PC のすべてのアカウントで共有されるデータ（ライセンス、設定、更新のキャッシュ、データベース）をプログラムが置く、Windows の隠しフォルダーです。セキュリティソフト、Windows の機能、インストーラーが依存しているので、フォルダー自体を削除したり、まとめて空にしたりしないでください。古いエラーレポートや、本当に削除したプログラムのフォルダーは、確認したうえで消せることが多いです。それ以外は、プログラム自身のアンインストーラーや設定に任せるほうが安全です。

## 中身は何か

Microsoft はこれを[既知のフォルダー](https://learn.microsoft.com/en-us/windows/win32/shell/knownfolderid)と定義しており、環境変数は `%ProgramData%` です。標準では非表示なので、`Win + R` に `%ProgramData%` と入力して直接開くか、**エクスプローラー › 表示 › 表示 › 隠しファイル** をオンにします。

AppData との違いは、[AppData](/ja/windows/blog/appdata-folder-what-can-delete) が一つのアカウントのものであるのに対し、ProgramData はすべてのアカウントのものであることです。テスト用 ThinkPad では、`Microsoft`、`Package Cache`、`ssh` のほかに、`Intel`、`Lenovo`、`Tencent` などのベンダーのフォルダーがありました。

矢印の付いた `Application Data` や `Documents` のような項目も見えます。これらは古いプログラムのために残されたリンクで、実体のフォルダーではありません。その PC では、`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` | シェーダーキャッシュ | 消せます。ゲームが再コンパイルします。[シェーダーキャッシュ](/ja/windows/blog/directx-shader-cache-windows)を見てください |
| 削除したプログラムのフォルダー | 残ったデータ | 多くは消せます。名前を確認し、同じベンダーのほかの製品がインストールされていないことを確かめてください |
| `Package Cache` | 修復と削除のために保持されたインストーラー | 消せません。[Installer フォルダー](/ja/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`、その他のパッケージマネージャー | インストールされたツール | パッケージの削除はそのツールで行う |
| まだ使っているハードウェアのベンダーフォルダー | ドライバー、ツール、ライセンス | 消せません。ベンダーのアプリを使ってください |
| まだ使っているプログラムのもの | ライセンスやデータベースが多い | 消せません |

残ったフォルダーを削除する前に、**設定 › アプリ › インストールされているアプリ** で、同じベンダーのほかのものがないか確認してください。`Adobe` や `Tencent` のような発行元のフォルダーは、複数の製品で共有されていることがあります。まず別の場所に移すか名前を変え、数日間 PC を使ってみてください。確信が持てるまでは、自分用のコピーを残しておきます。

## やってはいけないこと

- `C:\ProgramData` やその `Microsoft` フォルダーを削除しないでください。Windows の機能、Defender、インストーラーが壊れ、修復も困難です。
- 削除するためにフォルダーの所有権を取得しないでください。保護されたものを消そうとしている兆候で、権限を変えると別の問題が起きます。
- ProgramData を別のドライブに移動しないでください。インストール済みの PC で移動する方法は Windows になく、Microsoft はリダイレクトすると更新やアップグレードが失敗することがあると警告しています。
- ツールがリンクをたどる場合、フォルダーの合計を信用しないでください。上のコマンドで測ってください。

## Mole でできること

Mole for Windows の **分析** は、システムドライブ上の `ProgramData` とそのサイズを表示でき、`Package Cache` や `WER` などの既知のフォルダーには注記が付きます。その中のどれにも **ごみ箱に移動** は用意されていません。そこでの削除は、あえてワンクリックで選べないようにしています。**クリーン** は、そこからシステムのエラーレポートと NVIDIA のシステムシェーダーキャッシュを一覧し、後者は未選択で、どちらも管理者権限が必要です。すべてのアカウントのスタートメニューにあるリンク切れのショートカットも一覧できます。**アプリ** からアプリをアンインストールすると、Mole は `ProgramData` にあるそのアプリ自身のフォルダーを確認用に一覧でき、ほかの製品と共有されている発行元フォルダーでは削除せず、そこで止まります。Mole が `Package Cache` を消すことはありません。

## よくある質問

### ProgramData フォルダーとは何ですか？

`C:\ProgramData` にある隠しフォルダーで、ライセンス、設定、キャッシュなど、PC のすべてのアカウントでプログラムが共有するデータを置きます。

### ProgramData を削除できますか？

できません。古いエラーレポートや、削除したプログラムのフォルダーなど、確認したものだけを削除してください。

### ProgramData が大きいのはなぜですか？

たいてい一つか二つのプログラムが原因です。インストーラーのキャッシュ、ウイルス対策のデータ、更新ファイル、パッケージマネージャーなどです。判断する前にフォルダーを測ってください。

### ProgramData が見えないのはなぜですか？

隠されているからです。`Win + R` に `%ProgramData%` と入力するか、エクスプローラーで **表示 › 表示 › 隠しファイル** をオンにしてください。

### ProgramData と AppData の違いは何ですか？

AppData は一つのアカウントのもので、ProgramData は PC のすべてのアカウントで共有されます。どちらも隠されていて、キャッシュと必要なデータが混ざっています。


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