# WinSxSフォルダは見た目ほど大きく、削除してよいか

Cドライブを整理していると、`C:\Windows\WinSxS`が数GB、ときにはProgram Files全体より大きく見えることがあります。Windowsフォルダの中にあり、削除に抵抗するので、触ってよいかを聞かれます。触れますが、Windows自身のツールを通してだけです。その前に、その数字のどれだけが実体かを知る必要があります。

## 大きく見える理由

WinSxSはコンポーネントストアです。Windowsはここにコンポーネントを置き、失敗した更新のあとのロールバックと、壊れたシステムファイルの修復はこれに頼ります。[Microsoftの説明](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/determine-the-actual-size-of-the-winsxs-folder)は、大きく見える理由を扱っています。多くのファイルはSystem32とWinSxSの両方にあるように見えますが、ディスク上のコピーは1つで、もう一方はハードリンクです。エクスプローラーや、フォルダサイズを足し上げるほかのツールはハードリンクを考慮しないので、同じデータが2回数えられます。

## 先に実際のオーバーヘッドを測る

コマンドプロンプトを管理者として開き、次を実行します。

```cmd
Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore
```

出力の行を分けて読みます。

- **Windows Explorer Reported Size of Component Store**: エクスプローラーが計算するサイズ。ハードリンクは考慮されていません。
- **Actual Size of Component Store**: ハードリンクを考慮したサイズ。Windowsと共有しているファイルはまだ含まれます。
- **Shared with Windows**: ほかの場所にも現れ、Windowsの動作に必要なファイル。オーバーヘッドではありません。
- **Backups and Disabled Features**と**Cache and Temporary Data**: 合わせたものがコンポーネントストアのオーバーヘッドで、クリーンアップが影響できる部分です。
- **Component Store Cleanup Recommended**: Yesなら、クリーンアップでオーバーヘッドが減る可能性が高いです。

Microsoftの例では、エクスプローラーは4.98GBと報告し、実際のオーバーヘッドは約507MBです。大半が共有ファイルである数字に午後を使わないよう、クリーンアップの前に測ります。

## 手で削除しない

Microsoftの警告は明確です。WinSxSからファイルを消す、またはフォルダごと消すと、PCが起動できなくなり、更新もインストールできなくなることがあります。重要なシステムファイルの一部は、そこにしかないからです。削除を強制するためにTrustedInstallerから所有権を取っても、同じ結果になります。

## DISMでクリーンアップする

Windowsはすでにスケジュールでクリーンアップしています。StartComponentCleanupタスクはPCがアイドルのときに動き、更新されたコンポーネントのインストールから少なくとも30日待ってから前の版を消し、1時間で止まります。今すぐ行うには、次を実行します。

```cmd
Dism.exe /Online /Cleanup-Image /StartComponentCleanup
```

[Microsoftのクリーンアップのガイド](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/clean-up-the-winsxs-folder)は、スケジュールタスクとの違いを説明しています。更新されたコンポーネントの以前の版はすぐ削除され、30日の猶予も1時間の制限もありません。

`/ResetBase`を足すと、さらに進みます。

```cmd
Dism.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
```

すべてのコンポーネントの、置き換えられた版をすべて消します。そのあと、すでにインストールされている更新はアンインストールできなくなります。あとからインストールする更新には影響しません。戻る容量は、上の2つのオーバーヘッドの行に依存し、決まった数字ではありません。大きな更新の直後で、まだ安定しているか分からないうちは、このスイッチを外したままにします。

| コマンド | 消すもの | インストール済みの更新をアンインストールできるか |
| --- | --- | --- |
| `/StartComponentCleanup` | 更新されたコンポーネントの、置き換えられた版 | 一部。消された以前の版は、もうロールバックできない |
| `/StartComponentCleanup /ResetBase` | 置き換えられた版のすべて | できない |

インストール済みの更新をすべて恒久的に外せなくするのは`/ResetBase`だけです。通常の`/StartComponentCleanup`は以前のコンポーネント版をすぐ消すので、その特定の更新はロールバックの道を失います。

<figure class="blog-diagram">
  <picture>
    <source media="(max-width: 900px)" srcset="/img/blog/windows-winsxs-folder-cleanup-windows-en-mobile.webp" type="image/webp" width="768" height="1180">
    <img src="/img/blog/windows-winsxs-folder-cleanup-windows-en.webp" width="1360" height="454" loading="lazy" alt="オーバーヘッドを測ってからDISMでクリーンアップする">
  </picture>
  <figcaption>先に分析してオーバーヘッドと共有ファイルを分け、それからコンポーネントのクリーンアップを実行します。ResetBaseは任意で、そのあとはインストール済みの更新をアンインストールできなくなります。</figcaption>
</figure>

## コマンドを使わない場合

ディスククリーンアップで「システムファイルのクリーンアップ」を選び、「Windows Updateのクリーンアップ」を選びます。Microsoftのガイドは、これもコンポーネントストアを減らすと書いています。どちらの経路でも、あとでもう一度分析して比べます。エクスプローラーが表示するサイズより正確です。ほかの容量を調べ続けるなら、[いっぱいのCドライブを整理する](/ja/windows/blog/windows-c-drive-full)と[Windowsのキャッシュの整理](/ja/windows/blog/windows-cache-cleanup)へ進みます。システム全体の一時フォルダとWindows Installerのキャッシュは、[一時フォルダの整理](/ja/windows/blog/windows-temp-folder-cleanup)と[Windows Installerフォルダ](/ja/windows/blog/windows-installer-folder-cleanup)を見てください。

## よくある質問

### WinSxSフォルダは削除できますか?

できません。Microsoftは、WinSxSからファイルを消すとWindowsが起動または更新できなくなることがあると警告しています。代わりにDISMのクリーンアップを使います。

### ディスクの変化よりWinSxSが大きく見えるのはなぜですか?

多くのファイルはSystem32にも現れます。エクスプローラーは両方を数え、ディスク上は1つです。実際のサイズは`DISM /Online /Cleanup-Image /AnalyzeComponentStore`を使います。

### /ResetBaseは何を失いますか?

そのあと、インストール済みの更新はどれもアンインストールできなくなります。あとからインストールする更新には影響しません。

### コマンドを使わずに整理するには?

ディスククリーンアップの「システムファイルのクリーンアップ」にある「Windows Updateのクリーンアップ」もコンポーネントストアを減らします。あとでもう一度測ってください。


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