Windows
 Computer >> コンピューター >  >> システム >> Windows

Windows 11/10のWinSxSフォルダとは?巨大化する理由と安全なクリーンアップ方法を徹底解説

Windows 11/10/8/7を使用している方の多くは、WinSxSフォルダの存在に気づき、その巨大なサイズに驚いた経験があるのではないでしょうか。まだご存じない方のために説明すると、このフォルダはC:\Windows\Winsxsにあり、非常に大きな容量を占めています。筆者の場合、約5GBに達し、約6,000個のフォルダと25,000個のファイルを含み、Windowsフォルダ全体の約40%を占めています。Windows XPでは25〜50MB程度だったこのフォルダが、Windows Vista以降のOSではなぜこれほど大きくなるのか、不思議に思う方は多いはずです。

本記事では、このWinSxSフォルダの謎について詳しく解説します。

Windows 11/10におけるWinSxSフォルダとは?

WinSxSフォルダには、DLLやEXEなどのシステムファイルの複数のコピーが保存されており、互換性の問題なく複数のアプリケーションをWindows上で動作させることができます。フォルダの中を覗いてみると、同じ名前を持つ一見重複したファイルが大量にあるように見えます。しかし、これらは実際には同じファイルの異なるバージョンであり、プログラムごとに必要とするバージョンが異なるため保存されているのです。

WinSxS「Windows Side By Side(サイドバイサイド)」の略で、Windowsネイティブのアセンブリキャッシュです。複数のアプリケーションから共有利用されるライブラリがここに格納されます。この機能はWindows MEで初めて導入され、Windows 9x時代を悩ませていたいわゆる「DLL地獄(DLL Hell)」問題に対するMicrosoftのソリューションと位置づけられていました。

WinSxSフォルダ内では、「Backup」フォルダが最も大きな容量を占めています。また、ファイルタイプ別に見ると、「その他」に分類されるファイルがスペースの大半を占めており、その主な内訳は .imd、.ngr、.csd、.dll、.dll.mui、.exe などです。

Windows 7以降には、XPのようにシステムのソースモジュールをキャッシュしていた「dllcache」フォルダや「i386」フォルダは存在しません。サイドバイサイドアプリケーションの共有コンポーネントを保存しているのは、このWinSxSフォルダです。ここには、同じアセンブリやアプリケーションの複数のバージョンが含まれることがあります。すべてのサイドバイサイドアセンブリには一意の識別子が割り当てられており、その属性の一つがバージョン情報です。

「サイドバイサイドアセンブリは、名前付け、バインド、バージョン管理、展開、構成の基本単位としてオペレーティングシステムによって使用されます。WinSxSフォルダには、すべてのマニフェスト、オプションコンポーネント、およびサードパーティ製のWin32ファイルが含まれます」―― Microsoft

なぜ同じDLLやEXEの多数のバージョンを保持するのか?

前述のとおり、Windowsは古いDLLやライブラリコンポーネントをWinSxSフォルダに保存します。OSに新しいバージョンのファイルが含まれていても、特定のアプリケーションが動作に旧バージョンを必要とする場合は、WinSxSフォルダから古いバージョンが使用されます。そして新しいバージョンは、それを必要とする他のアプリケーションのために元の場所に残されるという仕組みです。

WinSxSフォルダの削除は安全か?

結論から言えば、このディレクトリを削除したり別の場所へ移動したりすることはできません。また、内部のファイルを手動で削除することも強く推奨されません。そのような操作を行うと、アプリケーションが動作しなくなったり、最悪の場合システム自体が破損する恐れがあります。多くのアプリケーションをインストールしている環境では、WinSxSフォルダが巨大になるのは自然なことです。

また、NTFSハードリンクの仕組み上、このフォルダはシステムボリューム以外の場所に配置できません。フォルダを移動しようとすると、Windows Update、サービスパック、オプション機能などが正しくインストールできなくなる可能性があります。

マニフェストやアセンブリなどのコンポーネントをWinSxSフォルダから削除すると、深刻なトラブルに見舞われることがあります。システムによって挙動は異なり、ある環境でうまくいっても別の環境では壊れることもあります!たとえば、削除してしまった特定のアセンブリを必要とするプログラムを後からインストールしても、そのプログラムは起動しません。フォルダの圧縮も厳禁です。Windows Updateやホットフィックスの適用時に問題が発生する可能性があります。

最も安全なクリーンアップ方法は、不要なアプリケーションをアンインストールすることです。ただし、これも万全ではありません。多くのアプリケーションは、他のソフトウェアとファイルを共有しているため、アンインストール後もファイルがここに残ることがあります。そのため、使われていない不要なDLLが残される可能性はかなり高いのです。

WinsxsLiteなどのサードパーティ製WinSxSクリーンアップツールの使用はお勧めしません。Windowsを壊してしまうリスクがあります。

また、新しいソフトウェアを頻繁に試したり、インストールとアンインストールを繰り返す方は、WinSxSフォルダのサイズが大きくなっていることに気づくでしょう。これは、Windowsが互換性の問題なく複数のアプリケーションを動作させるために、DLLファイルの複数のコピーを保存し続けているためです。

Windows 11/10でのWinSxSフォルダのクリーンアップ方法

Windows 8.1では、DISM.exeに新しいコマンドラインオプション「/AnalyzeComponentStore」が導入されました。このコマンドを実行すると、WinSxSフォルダ(コンポーネントストア)を分析し、クリーンアップが推奨されるかどうかを判定してくれます。このオプションはWindows 11/10にも引き継がれています。

  • Windows 11/10/8.1/8:ディスククリーンアップツールを開き、「Windows Update のクリーンアップ」オプションを使用してWinSxSを整理します。
  • Windows 7:Microsoftが公開した更新プログラムを適用すると、ディスククリーンアップツールに「Windows Update のクリーンアップ」オプションが追加されます。
  • Windows Server:最新の更新プログラムにより、Windows ServerでもWinSxSのクリーンアップが可能になりました。

さらに、ディスク容量を解放するためのその他の方法を紹介します。定番の手法からやや踏み込んだものまで幅広く挙げます。

  1. ディスククリーンアップツールを実行する
  2. 使用していないアプリケーションをアンインストールする
  3. ページファイルを別のドライブに移動する
  4. 休止状態機能を無効にする
  5. 専用ダンプファイルオプションを使用して、メモリダンプファイルを別のボリュームに保存する
  6. システムの復元ポイントを無効にする
  7. ユーザープロファイルとプログラムファイルのディレクトリを別のボリュームに移す

TechNetブログより:コンポーネントストアの仕組み

TechNetブログからの公式情報: 以前のバージョンのWindowsからの最大の変更点の一つは、INFベースのOSからコンポーネント化への移行でした。オペレーティングシステムのすべてのコンポーネントはWinSxSフォルダに格納されており、Microsoftはこの場所を「コンポーネントストア」と呼んでいます。各コンポーネントには、ビルド対象のバージョン、言語、プロセッサアーキテクチャを含む一意の名前が付けられています。WinSxSフォルダはコンポーネントが実体として存在する唯一の場所であり、システム上で見られる他のすべてのファイルは、コンポーネントストアからハードリンクによって「投影」されたものにすぎません。

ストアが巨大化する理由がわかったところで、次の疑問は「古いバージョンのコンポーネントを削除しないのか」という点でしょう。短く答えるなら、それは信頼性のためです。コンポーネントストアは、システム上の他の情報とともに、任意の時点でどのバージョンのコンポーネントを投影すべきかを判断することを可能にします。つまり、セキュリティ更新プログラムをアンインストールした場合でも、システム上の次に高いバージョンを自動的に適用できるため、「順序不正のアンインストール」問題は発生しません。また、オプション機能を追加インストールする際も、RTM版ではなくシステム上で利用可能な最高バージョンが選択されます。

WinSxSフォルダのサイズを安全に縮小する唯一の方法は、システムが実行可能なアクションの範囲を減らすことです。その最も簡単な方法は、コンポーネントをインストールしたパッケージ自体を削除すること、つまり置き換えられた古いパッケージをアンインストールすることです。Service Pack 1にはVSP1CLN.EXEというツールが含まれており、これを実行するとサービスパックが永続的なもの(削除不可)となり、置き換えられたすべてのコンポーネントのRTM版が削除されます。サービスパックを永続化することで、RTM版が今後一切不要になることが保証されるため、この削除が可能になるのです。

E7ブログより:WinSxSディレクトリの実際の消費容量

E7ブログからの公式情報: オペレーティングシステムの「モジュール化」は、Windows Vistaにおける重要なエンジニアリング目標でした。これは、レガシーWindowsにおけるインストール、サービス、信頼性に関する多くの問題を解決するためのものでした。WinSxSディレクトリは、すべてのシステムコンポーネントの「インストールおよびサービス状態」を表しています。しかし実際には、エクスプローラーやDIRコマンドで表示されるほどのディスク容量は消費していません。ハードリンクの仕組み上、実容量を把握しにくくなっている点は事実です。WinSxSディレクトリはオフラインサービスを可能にし、Windows Vista以降を「イメージングに対して安全」な状態に保っています。

ネット上には「WinSxSディレクトリを削除しても問題ない」と謳うブログや非公式ツールがいくつか存在します。確かに、削除後もシステムは一見正常に起動し動作しているように見えるでしょう。しかし、これは非常に危険な行為です。すべてのOSコンポーネントを確実にサービスする能力や、オプションコンポーネントを更新・構成する能力を失うことになるからです。Windowsは、WinSxSディレクトリを当初インストールされた場所の物理ドライブ上でのみサポートしています。

まとめ

WinSxSフォルダは、そのままの状態で放置しておくのが最善です。どうしても容量が気になる場合は、DISMコマンドやディスククリーンアップの「Windows Update のクリーンアップ」機能など、公式にサポートされている方法だけを使いましょう。

関連情報として、Sysnativeフォルダ、Pantherフォルダ、CatrootおよびCatroot2フォルダについても解説記事をご用意しています。

あわせて読みたい関連記事

  1. Windowsでコンポーネントストア(WinSxS)を分析する方法
  2. WindowsでのWinSxSフォルダのクリーンアップ手順
  3. ディスククリーンアップツールに「Windows Update のクリーンアップ」オプションを追加する方法
  4. Windows ServerでWinSxSディレクトリをクリーンアップする方法
  1. Windows 11/10の「Windows アクセサリ」フォルダの場所と開き方

    Windows 11/10の「Windows アクセサリ」フォルダはどこにあるのでしょうか?「スタートメニューから消えてしまったのでは?」と感じている方も多いかもしれませんが、実際にはちゃんと存在しています。場所さえわかれば、誰でも簡単に見つけられます。この記事では、アクセサリフォルダの場所と開き方をわかりやすく解説します。 「Windows アクセサリ」フォルダには、付箋(Sticky Notes)、ステップ記録ツール、切り取りツール(Snipping Tool)、ペイント、文字コード表など、Windowsに標準搭載されている各種ツールへのショートカットがまとめられています。 Windows

  2. Windows 11/10の「リザーブドストレージ」とは?仕組みと確認方法を徹底解説

    Windows 11/10のアップグレード時に「更新プログラムの失敗」に悩まされるユーザーは少なくありません。その主な原因は、タスクの完了に必要な空きストレージ容量が不足していることです。この問題に対し、Microsoftは実用的な解決策としてリザーブドストレージ(Reserved Storage)を導入しました。同社は、更新プロセスがスムーズに完了するよう必要なディスク領域を自動的に確保し、具体的には約7GBのディスク領域を予約することで、大規模な更新プログラムのインストール失敗を防ぎます。本記事では、Windows 11/10におけるこの新しいストレージ予約機能の仕組みについて詳しく解説し