\r\n\r\n
サードパーティ製のユーティリティを使用すると、システムのディスク容量が不足しているときに、大小のファイルのコレクションを一目で発見することができます。そこで、WinSxSフォルダを見つけることができるかもしれません。5〜10GB近い容量があり、多くのユーザーにとってWindowsの世界のブラックボックスのような存在です。
当然ながら、WinSxSに実際にインストールされているのはどのようなファイルなのか、なぜこのような大きなファイルなのかという疑問が生じます。Web検索やフォーラムでは、このフォルダに関する質問がたくさん寄せられています。WinSxSの秘密と正しい管理方法を明らかにしましょう。
WinSxS(サイドバイサイド)は、Windows OSの「DLL地獄」問題を解決するために生まれました。簡単に言えば、あるプログラムがダイナミックリンクライブラリ(DLL)ファイルを変更し、同じDLLを使用する必要がある他のアプリケーションの重要な機能に影響を与えるような事例が含まれるのです。
例えば、あるアプリケーションがバージョン1.0.2のDLLを必要とする場合、他のアプリケーションがそのリソースを別のバージョン(例えば1.0.3)に置き換えると、バージョン1.0.2に依存していた以前のアプリケーションがクラッシュし、互換性の問題や、最悪の場合はブルースクリーン死を引き起こす可能性があります。
Windowsxpでは、コンポーネントライブラリが正しく起動します。これらの各コンポーネント(DLL、OCX、EXE)は、WinSxSというディレクトリに配置されています。ソフトウェアやハードウェアのパッケージによってインストールされたすべての異なるバージョンのDLLを保存し、必要に応じて正しいバージョンをロードすることができます。
では、アプリケーションはどのバージョンのDLLをロードする必要があるのか、どうやって知ることができるのでしょうか?そこで重要な役割を果たすのが「マニフェストファイル」です。これには、起動時にアプリケーションをどのように処理するかをオペレーティングシステムに通知するDLLの設定と正しいバージョンが含まれています。
各コンポーネントは、プロセッサアーキテクチャ、言語、バージョン、IDを含む一意の名前で識別されます。これらのコンポーネントの特定のバージョンは、パッケージに集められます。
この年表は、OSのメジャーアップグレードごとにWinSxSに施された改良を表しています。
ハードリンクはWindowsオペレーティングシステム全体で使用されています。WinSxSの場合、システム上で唯一コンポーネントが配置されている場所です。コンポーネントストア以外のファイルのインスタンスは、すべてWinSxSフォルダにハードリンクされています。では、ハードリンクとは何でしょうか。
Microsoftのドキュメントによると、ハードリンクは、2つのファイルがディスク上の同じ場所を参照できるようにするファイルシステムのオブジェクトです。これは、Windowsが余分なスペースを取らずに同じファイルのコピーを複数保持できることを意味します。
Windowsがアップデートされるたびに、まったく新しいバージョンのコンポーネントがリリースされ、ハードリンクを経由してシステムに投影される。古いものでもコンポーネントストアの信頼性は保たれていますが、ハードリンクはされていません。
fsutilコマンドを使用すると、任意のシステムファイルのハードリンクを確認することができます。Win+Xを押して、コマンドプロンプト(Admin)を選択し、次のように入力します。
fsutil hardlink list [system file path]例えば、「audio srv.dll」というファイルがあるかどうかを確認したい場合は、次のように入力します。
fsutil hardlink list "C:\Windows\System32\audiosrv.dll"コンポーネントライブラリは、Windowsのカスタマイズやアップデートに必要な機能をサポートするために、以下のような重要な役割を担っています。
WinSxSには、PC上のハードウェアやソフトウェアとの互換性を維持するために必要なすべてのファイルが含まれています。Windowsの最大の利点の1つは、古いハードウェアやアプリケーションを実行できることです。しかし、この従来の互換性には、ディスク容量やバグなどの代償がつきものです。
C:\WindowsWinSxS に移動し、右クリックで「プロパティ」を選択します。このフォルダーは、ほぼ7.3GBのディスクスペースを占有しています。しかし、問題はこれが実寸でないことです。その理由は、ファイルマネージャーやその他のサードパーティツールが「ハードリンク」を考慮しないためです。
ハードリンクへの各参照を、各場所のファイルの1つのインスタンスとしてカウントします。したがって、システムファイルがWinSxSとSystem32の両方のディレクトリに存在する場合、fileexplorerはフォルダーのサイズを誤って2倍にしてしまいます。
Windowsコンポーネントストアの実際のサイズを確認するには、昇格したコマンドプロンプトウィンドウを開き、次のように入力します。
Di**.exe /Online /Cleanup-Image /AnalyzeComponentStore注意:/AnalyzeComponentStoreオプションは、Windows 8およびそれ以前のバージョンでは認識されません。
解析の結果、WinSxSフォルダー内のハードリンクを考慮した、実際のコンポーネントストレージのサイズは5.37GBに縮小されました。Windowsとの共有では、ハードリンクのファイルサイズが表示されます。Last cleanup date は、直近でコンポーネントストレージのクリーンアップが完了した日付である。
多くのユーザーから、WinSxSフォルダからファイルを手動で削除できないかという質問をよく受けますが、答えは「ノー」です。
Windowsが破損する可能性が高く、重要なWindowsの更新プログラムが**正確に**インストールされない可能性があります。WinSxSフォルダーからうまくファイルを削除しても、どのアプリケーションが動かなくなるかわかりません。
しかし、いくつかの内蔵ツールを使って、WinSxSフォルダのサイズを小さくすることができます。Disk Cleanup、DISMコマンド、remove Features on Demandなどのツールを使って、WinSxSフォルダーを切り詰める予定です。
検索」ボックスで「ディスクのクリーンアップ」と入力し、「ディスクのクリーンアップ」を選択します。このウィンドウで、「システムファイルのクリーンアップ」ボタンをクリックします。ユーティリティを再起動し、すべてのクリーンアップ・オプションへのアクセスを解除します。インストールファイルや以前のバージョンのWindowsなどを削除することができます。ディスクのクリーンアップツールは、Windows 10のクリーンアップの起点となるツールです。
このステップバイステップガイドを読んで、Windows 10をクリーニングする最適な方法を見つけてください。
Windowsでは、必要に応じてWindowsのデフォルト機能を有効または無効にすることができます。hyperv、Print to PDF、Windows Subsystem for Linux(WSL)など、便利な機能を追加することができます。
チェックを外した機能はWinSxSフォルダーに残り、ディスクの容量を消費します。ストレージの容量が少ないユーザーは、Windowsのインストールをできるだけスリムにしたいと思うかもしれません。起動したコマンドプロンプトのウィンドウを開き、次のように入力します。
DISM.exe /Online /English /Get-Features /Format:Table機能名とそのステータスのリストが表示されます
関数をシステムから削除するには、次のように入力します。
DISM.exe /Online /Disable-Feature /featurename:NAME /Remove(nameをリストに記載されている関数名に置き換えてください)
もう一度/Get Featuresコマンドを実行すると、ステータスが「Disabled」だけでなく「Disabled with Payload Removed」と表示されます。その後、削除したコンポーネントをインストールする場合、Windowsはコンポーネントファイルを再度ダウンロードするよう促します。
Windows 8/8.1には、システムを使用しないときに、コンポーネントストレージを自動的にクリーンアップする機能が組み込まれています。タスクスケジューラーを開き、「Microsoft> Windows> Services」に移動します。項目を右クリックし、「実行」をクリックします。
更新されたコンポーネントをインストールした後、タスクは以前のバージョンのコンポーネントをアンインストールできるようになるまで少なくとも30日間待機します。また、このタスクには1時間のタイムアウトがあり、すべてのファイルをクリーンアップできない可能性があります。
DISM/Cleanup Imageパラメータを使用すると、以前のバージョンのコンポーネントを直ちに(30日間の猶予期間なしで)、1時間のタイムアウト制限なしで削除することができます。コマンドプロンプト(Admin)を開き、次のように入力します。
DISM.exe /online /Cleanup-Image /StartComponentCleanupResetBaseスイッチを追加すると、各コンポーネントの代替バージョンをすべて削除することができます。ただし、現在のアップデートをアンインストールすることはできません(たとえ不具合があったとしても)。
DISM.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase次のコマンドは、Service Packのアンインストールに必要なすべてのバックアップコンポーネントを削除します。Windowsの特定のバージョンに対する累積的な更新プログラムの集合体です。
DISM.exe /online /Cleanup-Image /SPSupersededWinSxSコンポーネントストレージは、Windowsの日々の運用において重要な役割を担っています。そのため、ファイルを削除したり、WinSxSフォルダを移動したりして、容量問題を解決する必要はありません。Windowsアップデートでは、詳細なレポートとクリーンアップツールが提供され、他の容量不足を見つけるために使用することができます。
WinSxSのフォルダーサイズは、上記のテクニックを踏襲すれば、若干小さくすることができます。この記事を読むと、どのWindowsファイルやフォルダーを削除すれば、さらにディスクの空き容量を増やすことができるかがわかります。