こんにちは、阿久津です。Windows XPから、複数のバージョンを持つコンポーネントのコンフリクト(衝突)を避ける仕組みとして、「Side-by-side Assemblies(WinSxS)」が加わっています。起動時にマニフェスト(拡張子「.manifest」)と呼ばれるコンポーネントの情報ファイルを参照するタイプのソフトウェアは、「分離アプリケーション」と呼び、現行のWindows 8.1でもその仕組みは引き継がれてきました。

各コンポーネントは「%SystemRoot%\WinSxS(コンポーネントストア)」フォルダーに格納されますが、以前から問題視されてきたのは、そのサイズです。筆者のメインマシン(Windows 8.1)で確認したところ、フォルダー数は約16,000にも及び、ファイルサイズは約6GB。Windows 8.1には、このコンポーネントストアフォルダーを自動的に整理するタスクが組み込まれているため、さほど肥大化していません(図01~02)。

図01 筆者が使っているメインマシンの「WinSxS」フォルダー。6GBほどストレージ容量を消費しています

図02 タスクスケジューラの「\Microsoft\Windows\Servicing」に登録されている「StartComponentCleanup」。コンポーネントストアフォルダーのクリーンアップを実行します

しかし、以前のWindowsは延々と肥大化する傾向があるため、WinSxSフォルダーのクリーンアップを求めるユーザーも少なくありませんでした。コンポーネントストアフォルダーは前述したコンフリクトを避けるための仕組みであり、基本的に削除してはいけません。しかし、イメージバックアップの作成前など、一時的にクリーンアップしたい場合もあります。そこで今回はコマンドラインからコンポーネントストアをクリーンアップするチューニングをお送りしましょう。

コンポーネントストアフォルダーを調査する

1. 管理者権限でコマンドプロンプトを起動します。
2. 「Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore」を実行します。
3. コンポーネントストアフォルダーの調査結果を確認します。

これでコンポーネントストアフォルダーの概要が示されました。今回の例では「(同フォルダーの)実際のサイズ」は「6.04GB」、同フォルダーに対するクリーンアップが「推奨」されていることが確認できました。環境によってはコンピューターの再起動を求められますので、その際は指示に従ってください(図03~05)。

図03 [Win]+[X]キーを押し、メニューの<コマンドプロンプト(管理者)>をクリックします

図04 コマンドプロンプトに「Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore」と入力して、[Enter]キーを押します

図05 処理を終えるとコンポーネントストアフォルダーの概要が示されます。場合によっては再起動を求められます

コンポーネントストアフォルダーのクリーンアップは2種類の方法があります。まずはGUIベースで操作する簡単な方法から紹介しましょう。

コンポーネントストアフォルダーをクリーンアップする その1

1. タスクスケジューラを起動します。
2. タスクスケジューラライブラリ\Microsoft\Windows\Servicingと展開します。
3. タスク「StartComponentCleanup」を実行します。

図06 [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「Taskschd.msc」と入力して<OK>ボタンをクリックします

図07 タスクスケジューラが起動したら、タスクスケジューラライブラリ\Microsoft\Windows\Servicingと展開します

図08  「StartComponentCleanup」を右クリックし、メニューの<実行する>をクリックします

図09 クリーニングを終えると「状態」が「準備完了」に戻ります(更新されない場合は[F5]キーを押し、更新してください)

これでコンポーネントストアフォルダーの手動クリーンアップが実行できました(図06~09)。続いて、もうひとつの方法を紹介します。

コンポーネントストアフォルダーをクリーンアップする その2

1. 管理者権限でコマンドプロンプトを起動します。
2. 「Dism.exe /Online /Cleanup-Image /StartComponentCleanup」を実行します。
3. コマンドプロンプトを閉じます。

これでコマンドラインから、クリーンアップを実行できました(図10~11)。

図10 コマンドプロンプトに「Dism.exe /Online /Cleanup-Image /StartComponentCleanup」と入力して、[Enter]キーを押します

図11 数十分ほど待つと、完了メッセージが表示されます

いずれも実行内容は同じですが、後者のほうがエラーなど詳細なメッセージを確認できるため、利便性は向上します。結果を確認するには、「Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore」を再実行してください。今回の例では、「コンポーネントストアフォルダーの実際のサイズ」が「3.63GB」と約2.5GBも減り、クリーンアップ推奨が解除されました(図12)。

図12 コマンドプロンプトに「Dism.exe /Online /Cleanup-Image /AnalyzeComponentStore」と入力して、[Enter]キーを押してください。これでクリーニング結果が確認できます

問題はコンポーネントストアが破損しているケースです。Windows Update経由で適用する更新プログラムの導入タイミングによって、コンポーネントストアが破損することがあります。筆者もあまり経験はありませんが、Windows 8.1 Updateを適用した実験用環境は、このケースに該当しました。

その際は「Dism.exe /Online /Cleanup-Image /ScanHealth」でコンポーネントストアの健康状態を確認し、「Dism.exe /Online /Cleanup-Image /RestoreHealth」でストアの修復を実行してください。Windowsイメージファイルの指定は必要ありません(図13~14)。

図13 コマンドプロンプトに「Dism.exe /Online /Cleanup-Image /ScanHealth」と入力して、[Enter]キーを押します

図14 コマンドプロンプトに「Dism.exe /Online /Cleanup-Image /RestoreHealth」と入力して、[Enter]キーを押します

それでは、また次号でお目にかかりましょう。

阿久津良和(Cactus