Windows 11/10 の WinSxS フォルダとは?

ほとんどの方は、Windows 11/10/8/7 のWinSxS フォルダに気づき、そのサイズに驚いたことがあるでしょう。気づいていない方のために説明すると、このフォルダは C:\Windows\Winsxs にあり、非常に大きいです! 私の場合は約 5 GB で、6,000 個のフォルダと 25,000 個のファイルがあり、Windows フォルダの約 40% を占めています! XP ではこの Winsxs フォルダのサイズは約 25~50 MB でしたが、Windows 11、Windows 10、Windows 8、Windows 7、Windows Vista では、その大きさが多くの人にとって興味深いものです! 下の画像をご覧ください。

では、Windows 11/10 のこの Winsxs フォルダの謎は何でしょうか? この投稿で調べてみましょう。 

Windows 11/10 の WinSxS フォルダとは

WinSxS フォルダには、複数の dll、exe、およびその他のシステム ファイルが格納されており、複数のアプリケーションを互換性の問題なく Windows で実行できます。内部をブラウズすると、それぞれ同じ名前を持つ大量の重複ファイルがあるように見えます。これらは実際には、異なるプログラムで異なるバージョンが必要になる可能性があるため、格納されている同じファイルの異なるバージョンです。

Winsxsは「Windows Side By Side」の略で、Windows ネイティブ アセンブリ キャッシュです。複数のアプリケーションで使用されているライブラリがここに格納されます。この機能は、Windows ME で初めて導入され、Windows 9x を悩ませていた「dll hell」の問題に対する Microsoft の解決策とみなされていました。

Winsxs では、「backup」フォルダが最も大きく、下の画像で確認できます。

また、下の画像で確認できるように、Winsxs フォルダでは「その他」のファイルの種類がほとんどのスペースを占めています。これらは主に、.imd、.ngr、.csd、.dll、.dll.mui、.exe、およびその他のファイルの種類で構成されています。

Windows 7 以降では、「dllcache」フォルダはなく、システムが (XP のように) すべてのソース モジュールをキャッシュする「i386」フォルダも見つかりません。サイドバイサイド アプリケーションの共有コンポーネントを格納するのはこの WinSxS フォルダです。これらのファイルは、同じアセンブリまたはアプリケーションの複数のバージョンである可能性があります。サイドバイサイド アセンブリはそれぞれ固有の ID を持ちます。アセンブリ ID の属性の 1 つはバージョンです。

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

しかし、なぜこれほど多くのサブフォルダがあり、なぜ同じ dll、exe、またはその他のファイルの異なるバージョンをこれほど多く保持するのでしょうか?

前述のように、Windows は古い dll およびライブラリ コンポーネントを WinSxS フォルダに格納します。このファイルの新しいバージョンが OS の一部である場合でも、特定のアプリケーションが実行するために特定の古いバージョンを必要とする場合は、WinSxS フォルダの古いバージョンが使用され、新しいバージョンはそれを必要とする可能性のある他のアプリケーションのために現在の場所に保持されます。

WinSxS フォルダを削除しても安全ですか?

明らかに、このディレクトリを削除したり、別の場所に移動したりすることはできません。また、ここで何かを削除することはお勧めできません。そのような手順をとると、アプリケーションが機能しなくなったり、システムが壊れたりする可能性があります! 多くのアプリケーションがインストールされている場合は、巨大なサイズの WinSxS フォルダが存在する可能性があります。この WinSxs フォルダは、システム ボリューム以外のボリュームに存在することはできません。これは、NTFS ハード リンクのためです。このフォルダを移動しようとすると、Windows の更新、サービス パック、機能などが正しくインストールされない可能性があります。

マニフェストやアセンブリなど、WinSxS フォルダからコンポーネントを削除すると、問題が発生する可能性があります。各システムは異なる反応を示します。あるシステムで機能するものが、別のシステムでは壊れる可能性があります! たとえば、削除した特定のアセンブリを必要とするプログラムをインストールすると、そのプログラムは実行されません! WindowsUpdate 中またはホットフィックスのインストール中に問題が発生する可能性があるため、フォルダを圧縮することもできません。

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

Windows を壊す可能性があるため、WinsxsLiteなどの WinSxS クリーンアップ ツールの使用はお勧めしません。

また、新しいソフトウェアを試したり、頻繁にインストールやアンインストールを行ったりする場合は、互換性の問題なく複数のアプリケーションを実行できるように、Windows がこれらの dll ファイルの複数のコピーを格納するため、Winsxs のサイズが実際に大きいことに気づく場合があります。

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

Windows は WinSxS フォルダのクリーンアップ用に新しいコマンドライン オプションを導入しました: 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 ブログからの更新 1:以前のバージョンの Windows との最も大きな変更の 1 つは、INF で記述された OS からコンポーネント化への移行でした。オペレーティング システムのすべてのコンポーネントは WinSxS フォルダにあります。実際、この場所をコンポーネント ストアと呼びます。各コンポーネントには、作成されたバージョン、言語、プロセッサ アーキテクチャを含む一意の名前があります。WinSxS フォルダは、システム上でコンポーネントが見つかる唯一の場所です。システムで表示されるファイルの他のすべてのインスタンスは、コンポーネント ストアからのハード リンクによって「投影」されます。

ストアが非常に大きくなる可能性がある理由がわかったところで、次に、古いバージョンのコンポーネントを削除しない理由を尋ねられるでしょう。その簡単な答えは信頼性です。コンポーネント ストアは、システムの他の情報とともに、任意の時点でプロジェクトに最適なコンポーネントのバージョンを判断することができます。つまり、セキュリティ更新プログラムをアンインストールすると、システムに次の上位バージョンをインストールできます。もう「順序不同のアンインストール」という問題はありません。また、オプション機能をインストールすることを決定した場合、コンポーネントの RTM バージョンを選択するだけでなく、システムで利用可能な最高バージョンを確認します。

WinSxS フォルダのサイズを安全に小さくする唯一の方法は、システムが実行できるアクションのセットを減らすことです。それを行う最も簡単な方法は、そもそもコンポーネントをインストールしたパッケージを削除することです。これは、システムにあるパッケージの置き換えられたバージョンをアンインストールすることで実行できます。サービス パック 1 にはVSP1CLN.EXEというバイナリが含まれています。これは、サービス パック パッケージをシステムで永続的に (削除不可能に) し、置き換えられたすべてのコンポーネントの RTM バージョンを削除するツールです。これは、サービス パックを永続化することでしか実行できません。RTM バージョンは必要ありません。

E7 ブログからの更新 2: オペレーティング システムの「モジュール化」は、Windows Vista のエンジニアリング上の目標でした。これは、インストール、サービス、信頼性に関する従来の Windows の多くの問題を解決するためでした。Windows SxS ディレクトリは、すべてのシステム コンポーネントの「インストールおよびサービス状態」を表します。しかし実際には、使用済みディスク領域を測定するために組み込みツール (DIR およびエクスプローラー) を使用すると、表示されるほど多くのディスク領域を消費しません。ディレクトリで消費される領域がわかりにくいようにしているという事実は、正当な指摘です! WinSxS ディレクトリはオフライン サービスも可能にし、Windows Vista 以降を「イメージングに安全」にします。

WinSxS ディレクトリを削除しても問題ないというブログや「地下」ツールがいくつかあり、確かにインストール後にシステムから削除すると、システムが起動して正常に動作するように見えます。しかし、上で説明したように、これは非常に悪い方法です。なぜなら、すべてのオペレーティング システム コンポーネントを確実にサービスし、システムでオプション コンポーネントを更新または構成する機能を削除することになるからです。Windows は、物理ドライブ上の元のインストール場所にある WinSxS ディレクトリのみをサポートしています。

結論

WinSxS フォルダーはそのままにしておきましょう。

Sysnative フォルダー、Panther フォルダー、Catroot & Catroot2 フォルダーの詳細については、こちらをご覧ください。

追加資料:

  1. Windows の Windows コンポーネント ストアまたは WinSxS を分析する
  2. Windows のディスク クリーンアップ ツールに Windows Update クリーンアップ オプションを追加する
  3. Windows Server で WinSxS ディレクトリをクリーンアップする。