ディスク クリーンアップ ハンドラーの作成

コンピュータの世界では、コンピュータのストレージ容量のサイズに関係なく、最終的にそれを埋めることは、もう一度証明された時間です。 コンピューターのハード ディスクの平均サイズは時間の経過とともに大幅に増加していますが、アプリケーションもそれに応じて増加しており、ユーザーはより多くの空きハード ディスク領域を作成する方法を探しています。 また、バックアップまたはパフォーマンス上の理由から、アプリケーションによって作成される多くの一時ファイルによって、使用可能な領域も削減されます。 ディスク領域が少なくなると、アプリケーションで使用される領域の量を減らす必要があります。 ディスク領域は、次のようなさまざまな方法で解放できます。

  • ファイルを削除しています。
  • ファイルの圧縮。
  • バックアップ メディアへのファイルの移動。
  • リモート サーバーへのファイルの転送。

クリーンアップの候補となるファイルは次のとおりです。

  • ユーザーがもう一度必要としないファイル。
  • パフォーマンス上の理由だけで存在する一時ファイル。
  • 必要に応じて、インストール CD から復元できるファイル。
  • 古いバックアップ ファイルなど、新しいバージョンに置き換えられた可能性があるデータ ファイル。
  • 長い間使用されていない古いファイル。

削除は、パフォーマンス上の理由から一時的にキャッシュされるファイルなど、ユーザーが再び必要としないファイルに特に適しています。 削除は、インストール CD から再読み込みできるグラフィックス ファイルなど、簡単に復元できるファイルにも適しています。 ユーザーが後で必要になる可能性があるファイルや再構築が困難なファイルは、圧縮またはバックアップの候補として適しています。

ユーザーがファイル システムを手動でクリーンすることは、適切な解決策ではありません。 ユーザーは、ファイルの多くが配置されている場所や、安全に削除できるファイルを認識する方法がわからない可能性があります。 さらに、ユーザーが重要なファイルを削除するリスクもあります。

このトピックでは、ディスク クリーンアップ ユーティリティの次のファセットについて説明します。

Windows ディスク クリーンアップ ユーティリティ

Windows 98 以降、Windows オペレーティング システムにはディスク クリーンアップが含まれています。これは、ユーザーが使用可能なハード ディスク領域をはるかに簡単に管理できるようにするユーティリティです。 ディスク クリーンアップ ユーティリティは、できるだけ多くのディスク領域を解放し、ユーザーが誤って重要なファイルを削除するリスクを減らすように設計されています。

ディスククリーンアップは、3 つの方法で開始できます。

  • ユーザーは[ 開始]をクリックしてディスククリーンアップを開始できます。 すべてのプログラムアクセサリおよびシステム ツールを指す。をクリックし、[ ディスク クリーンアップ] をクリックします。
  • システムは、未使用のディスク領域がクリティカル モードに達したことをメッセージ ボックスでユーザーに通知します。 2.25 ギガバイト (GB) を超えるドライブのクリティカル モードのしきい値は 200 MB です。 後続の警告は、80、50、および 1 MB で表示されます。 ユーザーには、ディスク領域を手動で解放するか、ディスク クリーンアップ ユーティリティを開始するオプションが与えられます。
  • ユーザーは、Windows のスケジュールされたタスク ウィザード (古いシステムではメンテナンス ウィザードと呼ばれます) で、スケジュールされた時刻にディスク クリーンアップ ユーティリティを自動的に実行させることができます。

ディスククリーンアップに固有の基本的な課題は、重要なファイルを削除せずに、できるだけ多くのディスク領域を解放することです。 クリーンアップ用にファイルをマークする標準的な方法がないため、すべての必須ファイルを確実に検出してクリーンできるアプリケーションは 1 つもありません。 ディスク クリーンアップ ユーティリティは、1 つの ディスク クリーンアップ マネージャーとディスク クリーンアップ ハンドラーのコレクションの間でクリーンアップ操作を分割することで、この問題に対処 します

ディスク クリーンアップ ユーティリティを実行すると、次のダイアログ ボックスが表示されます。 (コンピューターに複数のディスクまたはディスク パーティションが存在する場合、このダイアログが表示される前に、ユーザーは最初にドライブの選択を求められます)。

[クリーンアップ] ダイアログ ボックスのスクリーン ショット

ディスク クリーンアップ マネージャーは、オペレーティング システムの一部です。 前の図に示したダイアログ ボックスが表示され、ユーザー入力が処理され、クリーンアップ操作が管理されます。 不要なファイルの実際の選択とクリーンアップは、ディスク クリーンアップ マネージャーのリスト ボックスに表示される個々のディスク クリーンアップ ハンドラーによって行われます。 ユーザーは、ディスク クリーンアップ マネージャーの UI で [チェック] ボックスをオンまたはオフにして、個々のハンドラーを有効または無効にできます。

各ハンドラーは、適切に定義されたファイルのセットを担当します。 たとえば、図で選択したハンドラーは、ダウンロードしたプログラム ファイルをクリーンアップします。 図で選択したハンドラーには、[ファイルの 表示 ] ボタンもあります。 ボタンをクリックすると、ユーザーは通常、ユーザーがクリーンするファイルまたはファイルのクラスを指定できる Windows エクスプローラー ウィンドウの UI をハンドラーに表示するように要求できます。

Windows には多数のディスク クリーンアップ ハンドラーが付属していますが、他のアプリケーションによって生成されたファイルを処理するようには設計されていません。 代わりに、ディスク クリーンアップ マネージャーは、開発者が独自のディスク クリーンアップ ハンドラーを実装して登録できるようにすることで、柔軟性と拡張性を備えて設計されています。 すべての開発者は、ディスク クリーンアップ ハンドラーを実装して登録することで、使用可能なディスク クリーンアップ サービスを拡張できます。

一時ファイルを生成するすべてのアプリケーションは、ディスク クリーンアップ ハンドラーを実装して登録できます。また、登録する必要があります。 これにより、ユーザーはアプリケーションの一時ファイルを簡単かつ信頼性の高い方法で管理できます。 ハンドラーを実装するときに、影響を受けるファイルを決定し、実際のクリーンアップの実行方法を決定できます。

実装の基本

クリーンアップ ハンドラーは、インプロセス サーバー コンポーネント オブジェクト モデル (COM) オブジェクトです。 Windows には、DataDrivenCleaner という名前の既存のハンドラー オブジェクトが用意されています。 また、柔軟性を高めるためにハンドラーを自分で実装することもできます。 これらのオブジェクトを使用すると、ファイルの選択方法、ディスク領域の空き領域を指定できます。実装されたハンドラーの場合は、オプションの UI を表示して詳細な制御を行うことができます。 このセクションでは、独自のハンドラーを実装する方法について説明します。 DataDrivenCleaner オブジェクトの使用の詳細については、「 DataDrivenCleaner オブジェクトの使用」を参照してください。

ディスク クリーンアップ ハンドラーは、これら 5 つの基本的なタスクを実行する必要があります。

  • ハンドラー オブジェクトを初期化します。
  • ディスクをスキャンして、解放できるディスク領域を確認します。
  • UI を表示して、クリーンするファイルに関するユーザー フィードバックを取得します。 (省略可能)
  • クリーンアップを行います。
  • シャットダウンして。

ディスク クリーンアップ マネージャーがこれらのタスクを管理できるようにするには、ハンドラーが Windows 98 の 場合は IEmptyVolumeCache 、Windows ミレニアム エディション (Windows Me)、Windows 2000、Windows XP の 場合は IEmptyVolumeCache2 をエクスポートする必要があります。 IEmptyVolumeCache2 はIEmptyVolumeCache から継承するため、InitializeEx メソッドを追加するだけで済むため、両方を実装するには比較的少ない追加作業が必要です。 ハンドラーがこれらのオペレーティング システムの 1 つのみを対象としている場合を除き、両方のインターフェイスをエクスポートする必要があります。

これらのインターフェイスをエクスポートするには、5 つの基本的なタスクに対応するこれらのメソッドを実装する必要があります。

Initialize/InitializeEx

ディスク クリーンアップ ユーティリティを実行すると、2 つの初期化メソッドが呼び出されます。これはよく似ています。 Windows 98 ディスク クリーンアップ マネージャーは、ハンドラーの IEmptyVolumeCache::Initialize メソッドを 呼び出します。 ただし、Windows Millennium Edition (Windows Me)、Windows 2000、または Windows XP ディスク クリーンアップ マネージャーは、最初に IEmptyVolumeCache2::InitializeEx の呼び出しを試み、IEmptyVolumeCache2 がハンドラーによって公開されていない場合にのみ IEmptyVolumeCache::Initialize を使用します。 ディスク クリーンアップ マネージャーは、ハンドラーのレジストリ キーや、クリーンアップするディスク ボリュームなどの情報を メソッドに渡します。

どちらのメソッドでも、さまざまな表示文字列を返し、1 つ以上のフラグを設定できます。 2 つの方法の主な違いは、ディスク クリーンアップ マネージャーに表示されるテキストの処理方法です。 次の 3 つの文字列が影響を受ける。

String 目的 Initialize InitializeEx
表示名 ディスク クリーンアップ マネージャーのリスト ボックスに表示されるハンドラーの名前。 ppwszDisplayNameNULL の場合、既定値はレジストリから取得されます。 適切にローカライズされた文字列は、レジストリ値が使用されない ppwszDisplayName で指定する必要があります。
Description ハンドラーの名前が選択されている場合、リスト ボックスの下に表示される説明テキスト。 ppwszDescriptionNULL の場合、既定値はレジストリから取得されます。 適切にローカライズされた文字列は ppwszDescription で指定する必要があります。レジストリ値は使用されません。
ボタンのテキスト ユーザーがハンドラーの UI を表示できるようにする省略可能なボタンのテキスト。 使用できるパラメーターがありません。 レジストリで指定する必要があります。 適切にローカライズされた文字列は ppwszBtnText で指定する必要があります。レジストリ値は使用されません。

両方の初期化メソッドで見つかった pdwFlags パラメーターは、同じフラグのセットを認識します。 これらのフラグのうち 2 つは、ディスク クリーンアップ マネージャーによって メソッドに渡されます。

  • EVCF_SETTINGSMODE

    ディスク クリーンアップ マネージャーがスケジュールに従って実行されている場合は、 EVCF_SETTINGSMODE フラグを設定します。 このフラグが設定されている場合、ディスク クリーンアップ マネージャーは GetSpaceUsedPurge、または ShowProperties メソッドを呼び出しません。 ハンドラーの Initialize メソッドまたは InitializeEx メソッドは、 GetSpaceUsed および Purge によって通常実行されるすべてのタスクを処理する必要があります。 ユーザーからのフィードバックを受け取る機会がないため、クリーンに非常に安全なファイルにのみ触れる必要があります。 初期化メソッドの pcwszVolume パラメーターは無視し、ドライブに関係なく不要なファイルをクリーンする必要があります。

  • EVCF_OUTOFDISKSPACE

    EVCF_OUTOFDISKSPACE フラグが設定されている場合、ユーザーのディスク ドライブの領域が非常に不足しています。 ハンドラーは、パフォーマンスが低下した場合でも、ファイルの削除に対して積極的である必要があります。 ただし、ハンドラーは明らかに、アプリケーションが失敗したり、ユーザーがデータを失ったりする原因となるファイルを削除しないでください。

残りのフラグは、ディスク クリーンアップ ハンドラーによって設定され、ディスク クリーンアップ マネージャーに返されます。 詳細については、IEmptyVolumeCache::Initialize および IEmptyVolumeCache2::InitializeEx のメソッドリファレンス ページを参照してください。

  • EVCF_DONTSHOWIFZERO

    GetSpaceUsed によって返される値がハンドラーがディスク領域を解放できることを示している場合にのみ、ディスク クリーンアップ マネージャーのリスト ボックスにハンドラーを表示します。

  • EVCF_ENABLEBYDEFAULT

    ハンドラーが既定で有効になっていることを指定します。 ユーザーがディスク クリーンアップ マネージャーのハンドラーの一覧の [チェック] ボックスをオフにしてディスク クリーンアップを無効にしない限り、ディスク クリーンアップが行われるたびに実行されます。

  • EVCF_ENABLEBYDEFAULT_AUTO

    スケジュールされたクリーンアップ中にハンドラーが自動的に実行されるように指定します。

  • EVCF_HASSETTINGS

    ハンドラーに表示する UI がある場合は、このフラグを設定します。 応答として、ディスク クリーンアップ マネージャーは、リスト ボックスでそのハンドラーが選択されたときにボタンを表示します。 そのボタンをクリックすると、ディスク クリーンアップ マネージャーによって ShowProperties が呼び出されます。

  • EVCF_REMOVEFROMLIST

    ハンドラーが 1 回実行された後、使用可能なハンドラーの一覧からハンドラーの名前を削除します。 ハンドラーのレジストリ情報も削除されます。

GetSpaceUsed

ディスク クリーンアップ マネージャーは、このメソッドを呼び出して、ディスク クリーンアップ ハンドラーが解放できる可能性がある領域を決定します。 その後、ディスク クリーンアップ マネージャーは、リスト ボックスのハンドラー名の右側にその値を表示します。 この操作は、マネージャーの起動時とマネージャーのメイン UI が表示される前に、ディスク クリーンアップ マネージャーに登録されているすべてのハンドラーで実行されます。 GetSpaceUsed が呼び出されると、ハンドラーは、それが担当するファイルをスキャンし、クリーンアップ候補であるファイルを決定し、空き容量を返す必要があります。

スキャンは長いプロセスになる可能性があるため、ディスク クリーンアップ マネージャーは、このメソッドの picb パラメーターを使用して 、IEmptyVolumeCacheCallBack インターフェイスへのポインターを渡します。 ハンドラーは、スキャン中にインターフェイスを定期的に使用して IEmptyVolumeCacheCallBack::ScanProgress を呼び出します。これは 2 つの目的を果たします。

  • ディスク クリーンアップ マネージャーが進行状況バーを更新し、スキャンの進行状況をユーザーに通知できるようにします。
  • 進行状況ウィンドウの [キャンセル ] ボタンがクリックされた場合にスキャンを停止するようにハンドラーに通知します。 そのボタン イベントはハンドラーに直接通信されません。代わりに、ディスク クリーンアップ マネージャーは、次回 GetSpaceUsedIEmptyVolumeCacheCallBack::ScanProgress を呼び出す際にE_ABORTを返します。

ShowProperties

クリーンアップを開始する前に、ハンドラーは通常、Windows エクスプローラー ウィンドウの形式で UI を表示できます。これにより、ユーザーはハンドラーによってクリーンアップ用に選択されたファイルまたはファイルのクラスの一覧を表示できます。 Initialize または InitializeEx が呼び出されたときにハンドラーによって EVCF_HASSETTINGS フラグが設定された場合、ユーザーはディスク クリーンアップ マネージャーでその目的のために表示されるボタンをクリックして UI を要求できます。 ボタンのテキストはハンドラーによって異なりますが、"ファイルの表示"、"ページの表示"、"オプション" は一般的なラベルです。

ボタンがクリックされると、ディスク クリーンアップ マネージャーは ShowProperties を呼び出して、ハンドラーに UI の表示を求めます。 UI は、 ShowProperties メソッドの hwnd パラメーターでハンドルが渡されるウィンドウの子として作成する必要があります。

消去

ディスク クリーンアップ マネージャーは、ハンドラーの Purge メソッドを呼び出して、クリーンアップの動作を設定します。 メソッドの picb パラメーターは、ディスク クリーンアップ マネージャーの IEmptyVolumeCacheCallBack インターフェイスへのポインターです。 GetSpaceUsed メソッドと同様に、ハンドラーはコールバック インターフェイスを定期的に使用して進行状況を報告し、ユーザーが Cancel をクリックしたかどうかをディスク クリーンアップ マネージャーに照会する必要があります。 ただし、Purge メソッドは、ScanProgress ではなく IEmptyVolumeCacheCallBack::P urgeProgress を呼び出す必要があることに注意してください。

非アクティブ化

ディスク クリーンアップ マネージャーがシャットダウンの準備をしているときに、 Deactivate メソッドが呼び出されます。 ハンドラーは、必要なクリーンアップ タスクを実行し、 を返す必要があります。 ハンドラーを再度実行しない場合は、初期化メソッドの pdwFlags パラメーターで EVCF_REMOVEFROMLIST フラグを設定します。 このフラグが設定されている場合、ディスク クリーンアップ マネージャーはその一覧からハンドラーを削除し、ハンドラーのレジストリ エントリを削除します。 ハンドラーを再度実行するには、レジストリ エントリを再追加する必要があります。 このフラグは、通常、1 回だけ実行されるハンドラーに使用されます。

ディスク クリーンアップ ハンドラーの登録

ディスク クリーンアップ マネージャーの一覧にハンドラーを追加するには、特定のキーと値を Windows レジストリに追加する必要があります。

ハンドラーの CLSID の登録

すべての COM オブジェクトと同様に、ハンドラー オブジェクトの GUID と DLL は、HKEY_CLASSES_ROOTCLSID キーの下に登録する必要があります。 ディスク クリーンアップ マネージャーのリスト ボックスでハンドラーの名前の横に表示されるアイコンを登録することもできますが、これは省略可能です。 次の例は、関連するキー、値、およびデータを示しています。

HKEY_CLASSES_ROOT
   CLSID
      Handler's GUID
         DefaultIcon
            (Default) = Handler's Icon Path, Icon Index
         InprocServer32
            (Default) = Handler's DLL path
            ThreadingModel = Apartment

ディスク クリーンアップ マネージャーへのハンドラーの登録: 全般

登録を完了するには、ハンドラーは、次に示すように、その詳細を保持するキーを追加する必要があります。 このセクションの残りの部分では、このキーの内容について説明します。

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  VolumeCaches
                     Handler's Key

一般に、ハンドラーの詳細を保持するキーの名前は、処理するファイルの種類 ( ダウンロードしたプログラム ファイルなど) に対して名前が付けられますが、これは要件ではありません。 次の表では、このキーの下にある可能性のある値について詳しく説明します。

注意

ハンドラーのクラス識別子 (CLSID) を指定する既定値のみが必要です。他のすべての値は省略可能です。

Type 説明
Default REG_SZ CLSID の下に登録されているハンドラーのCLSIDHKEY_CLASSES_ROOT\。
AdvancedButtonText REG_SZ ユーザーがクリックしてハンドラーの UI を表示できる省略可能なボタンのテキスト。 &文字は、ボタンのキーボード ショートカットを割り当てる文字の前に配置できます。 AdvancedButtonText 値は、 IEmptyVolumeCache2::InitializeEx を公開するハンドラーによって無視されます。
CleanupString REG_SZ 実行可能ファイルとオプションのコマンド ライン パラメーターを指定するコマンド ライン。 このコマンド ラインは、ディスク クリーンアップの完了時に実行されます。
Csidl REG_DWORD ファイル検索に含める特別なフォルダーのシステムに依存しない識別子。 この値は、たとえば、CSIDL_LOCAL_APPDATAではなく0x0000001c数値として入力する必要があります。 使用可能な値の一覧については、「 CSIDL」を参照してください。 使用できる値は 1 つだけです。
Folder 値が指定されている場合、CSIDL 値によって示される場所は、検索パスを作成するためにその情報の先頭に付加されます。 たとえば、次のシナリオを考えてみましょう。
  • CSIDL 値は 0x0000000d として指定されます (CSIDL_MYMUSIC)
  • マイ ミュージック フォルダーは C:\Documents and Settings\username\My Music にあります
  • Folder 値に "Jazz\Singers" が含まれています
そのシナリオの結果、ディスク クリーンアップ ハンドラーは C:\Documents and Settings\username\My Music\Jazz\Singers フォルダーを検索します。 Folder 値の前のスラッシュは、存在しない場合に追加されることに注意してください。
説明 REG_SZ ハンドラーの名前が選択されている場合、ディスク クリーンアップ マネージャーのリスト ボックスの下に表示される説明テキスト。 ここでは、ハンドラーの機能、ハンドラー自体に関係するファイル、およびユーザーに対するその他の情報の解明について説明できます。 IEmptyVolumeCache2::InitializeEx がハンドラーによって公開されていない場合、このテキストは、メソッドの呼び出し時に ppwszDescription パラメーターで代替文字列を指定することで、ハンドラーの IEmptyVolumeCache::Initialize メソッドを介してオーバーライドできます。
表示 REG_SZ ディスク クリーンアップ マネージャーのリスト ボックスに表示されるハンドラーの名前。 IEmptyVolumeCache2::InitializeEx がハンドラーによって公開されていない場合、このテキストは、メソッドの呼び出し時に ppwszDisplayName パラメーターで代替文字列を指定することで、ハンドラーの IEmptyVolumeCache::Initialize メソッドを介してオーバーライドできます。
ファイルリスト REG_SZまたはREG_MULTI_SZ このハンドラーで検索およびクリーンアップされたファイルの一覧。 ワイルドカードは を使用して指定できます。 または * 文字。 値が REG_SZ 型の場合、 | を使用して複数の拡張機能が分離されます。または : 文字。両側にスペースがありません。
DDEVCF_REMOVEDIRS フラグが Flags 値に設定されている場合、これらの値はディレクトリ名とファイルを指定できます。
Flags REG_DWORDまたはREG_BINARY 検索およびクリーニング手順の要素を制御するフラグ。 次の値のうち 1 つ以上。
  • DDEVCF_DOSUBDIRS (0x00000001)。 再帰的に検索して削除します。
  • DDEVCF_REMOVEAFTERCLEAN (0x00000002)。 ハンドラーが 1 回実行されたら、レジストリから削除します。
  • DDEVCF_REMOVEREADONLY (0x00000004)。 検索条件を満たすファイルは、読み取り専用であっても削除します。
  • DDEVCF_REMOVESYSTEM (0x00000008)。 検索条件を満たすファイルは、システム ファイルであっても削除します。
  • DDEVCF_REMOVEHIDDEN (0x00000010)。 隠しファイルであっても、検索条件を満たすファイルを削除します。
  • DDEVCF_DONTSHOWIFZERO (0x00000020)。 検索条件に一致するファイルがない場合は、ディスク クリーンアップ マネージャーにこのハンドラーを表示しないでください。
  • DDEVCF_REMOVEDIRS (0x00000040)。 FileList 値をディレクトリと一致させ、一致するものとそのすべてのサブディレクトリを削除します。
  • DDEVCF_RUNIFOUTOFDISKSPACE (0x00000080)。 このハンドラーは、ディスク クリーンアップ マネージャーが IEmptyVolumeCache::Initialize または IEmptyVolumeCache2::InitializeEx を使用してEVCF_OUTOFDISKSPACE フラグを設定することによって決定される、重要な値を下回っている場合にのみ、このハンドラーを実行します。
  • DDEVCF_REMOVEPARENTDIR (0x00000100)。 クリーナーが実行されたら、指定したファイルの親ディレクトリを削除します。
  • DDEVCF_PRIVATE_LASTACCESS (0x10000000)。 クリーンアップする必要があるファイルを確認する際には、LastAccess 値 (指定されている場合) を使用します。 このフラグは、指定された LastAccess 値が常に使用される DataDrivenCleaner を使用する場合は無視されます。
Folder REG_SZ、REG_MULTI_SZ、またはREG_EXPAND_SZ FileList 値のエントリに一致するアイテムを検索する特定のフォルダー。 ワイルドカードは を使用して指定できます。 または * 文字。 値が REG_SZ 型の場合は、 | を使用して複数のフォルダー名が区切られます。文字。両側にスペースがありません。
CSIDL 値が存在する場合、この値に指定できるフォルダーは 1 つだけです。 CSIDL 値によって示される場所は、検索パスを構成するために、そのフォルダー パスの前に付加されます。 例については、CSIDL 値の説明を参照してください。
この値が Windows Vista Service Pack 1 (SP1) 以降に存在しない場合、クリーンアップ ハンドラーは無視され、初期化時にS_FALSEが返されます。
この値が Windows Vista 以前の元のリリースに存在しない場合は、現在のボリュームのルート フォルダーが使用されます。 その場合、ドライブ全体を検索するには、DDEVCF_DOSUBDIRS フラグが必要です。 これを行わないと、ルート フォルダー自体のみが検索されます。
ドライブまたはドライブを指定する必要があります。 これは、CSIDL 値またはREG_EXPAND_SZ文字列を介して指定できます。 ただし、これらのオプションを禁止するには、検索するドライブをフォルダー名に指定する必要があります。 ?: を使用して、現在のドライブ上のフォルダーを検索します。
IconPath REG_SZまたはREG_EXPAND_SZ ハンドラーと関連付けて使用するアイコンを取得するリソースへのパス。
LastAccess REG_DWORDまたはREG_BINARY ファイルが最後にアクセスされてから経過した日数、またはクリーンアップのためにそのファイルまたはディレクトリを考慮するためにディレクトリが作成された日数。
優先度 REG_DWORDまたはREG_BINARY ハンドラーが他のハンドラーに対して実行される順序を決定します。 数値が大きいほど、ハンドラーが実行されるプロセスの早い段階になります。 任意の数値が許容される範囲が定義されていません。
PropertyBag REG_SZ 表示名、説明、およびボタン テキストのローカライズされたテキストを提供するために使用されるリソースの CLSID。 このリソースは、ハンドラーが IEmptyVolumeCache を実装せず、ハンドラーが Microsoft Windows NT または Windows XP で実行されている状況で役立ちます。
ディスク クリーンアップ マネージャーは、 IEmptyVolumeCache2 が実装されている場合と同様に、ハンドラーの初期化ルーチンがこれらの文字列を返したかどうかを最初に確認します。 失敗すると、マネージャーは次に、この値で という名前のプロパティ バッグに移動します。 何も指定されていない場合は、レジストリからテキストを取得します。
StateFlags REG_DWORD コマンド ラインからディスク クリーンアップ マネージャーの実行可能ファイルCleanmgr.exeを実行すると、クリーンアップ プロファイルを宣言できます。 これらのプロファイルは、使用可能なハンドラーのサブセットで構成され、一意の数値ラベルが与えられます。 これにより、異なる時間にさまざまなハンドラー セットの実行を自動化できます。
コマンド ライン "cleanmgr.exe /sageset:nnnn" ( nnnn は一意の数値ラベル) に UI が表示され、そのプロファイルに含めるハンドラーを選択できます。 プロファイルを定義するだけでなく、sageset パラメーターは StateFlagsnnnn という名前の値も書き込みます。ここで、 nnnn はパラメーターで使用したラベルであり、 VolumeCaches のすべてのサブキーに書き込まれます。 これらのエントリには、2 つのデータ値が考えられます。
  • 0: このプロファイルの実行時には、このハンドラーを実行しないでください。
  • 2: このプロファイルの実行時に、このハンドラーを含めます。

たとえば、コマンド ライン "cleanmgr.exe /sageset:1234" が実行されるとします。 表示される UI では、ユーザーは [ダウンロードしたプログラム ファイル] を選択しますが、[ インターネット一時ファイル] は選択しません。 その後、次の値がレジストリに書き込まれます。
HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  VolumeCaches
                     Downloaded Program Files
                        StateFlags1234 = 0x00000002
                     Internet Cache Files
                        StateFlags1234 = 0x00000000

コマンド ライン "cleanmgr.exe /sagerun:nnnn" では、 nnnn の値が sageset パラメーターで宣言されたラベルと一致し、そのプロファイルで選択されているすべてのハンドラーが実行されます。
ディスク クリーンアップが正常に実行されると、汎用 StateFlags 値がレジストリに書き込まれます。 この値は、ユーザーにオプションとして最後に提示されたハンドラーの状態 (オンまたはオフ) を格納するだけです。 これらのエントリには、2 つのデータ値が考えられます。
  • 0: ハンドラーが選択されていません。
  • 1: ハンドラーが選択されました。

ディスク クリーンアップ マネージャーへのハンドラーの登録: Windows 2000 以降のシステム

レジストリで表示テキストを指定すると、ソフトウェアのローカライズが困難になる可能性があります。 このため、Windows 2000 および Windows XP では、推奨される初期化メソッド InitializeEx を使用して IEmptyVolumeCache2 インターフェイスがサポートされます。 Windows 2000 以降では、IEmptyVolumeCache::Initialize の前に常に IEmptyVolumeCache2::InitializeEx を呼び出そうとします。 システムは、IEmptyVolumeCache2 が公開されていない場合にのみ Initialize を使用してハンドラーを初期化します。

レジストリに関して、Windows 2000 以降の唯一の違いは、 ハンドラーによって IEmptyVolumeCache2::InitializeEx が公開されている場合に AdvancedButtonText、Display、Description の値を省略できることです。 適切にローカライズされたテキストを含むこれらの値は、 InitializeEx を呼び出すときにディスク クリーンアップ マネージャーに提供されます。

DataDrivenCleaner オブジェクトの使用

DataDrivenCleaner と呼ばれる基本的なディスク クリーンアップ ハンドラーは、オペレーティング システムによって提供されます。 このオブジェクトを独自の実装ではなくハンドラーとして使用するには、「Disk Cleanup Manager へのハンドラーの登録: 全般」で説明されているように、VolumeCaches のハンドラーのサブキーの既定値として CLSID {C0E13E61-0CC6-11d1-BBB6-0060978B2AE6} を使用します。

DataDrivenCleaner は IEmptyVolumeCache2 を公開しないため、Display と Description の値はレジストリを通じて提供されます。 これらの文字列を宣言するときは、ローカライズの問題が発生する可能性があることに注意してください。 ローカライズされたテキストは、PropertyBag 値を使用して指定できます。 このハンドラーでは UI がなく、表示するボタンもないため、AdvancedButtonText 値は無視されます。

ディスク クリーンアップ ハンドラーの登録例

電話会社によって実装されたディスク クリーンアップ ハンドラーの登録例を次に示します。 このハンドラーは 、IEmptyVolumeCacheIEmptyVolumeCache2 の両方を実装するため、Windows 98 を実行しているコンピューターで使用される場合に備えて、AdvancedButtonText、Description、Display の値が提供されます。 ハンドラーは CSIDL と Folder の値を組み合わせて C:\Program Files\The Phone Company\Temp ディレクトリ内のファイルを検索し、サブディレクトリも検索されるように DDEVCF_DOSUBDIRS フラグを設定します。 .tmp および .tpc 拡張子を持つファイルのみがクリーンアップ対象と見なされ、それらのファイルのうち、14 日以上アクセスされていないファイルのみが考慮されるように、DDEVCF_PRIVATE_LASTACCESS フラグが設定されます。 クリーンアップ候補が見つからない限り、ハンドラーが一覧に表示されないように、DDEVCF_DONTSHOWIFZERO フラグも設定されます。

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  VolumeCaches
                     The Phone Company Files
                        (Default) = {the CLSID GUID}
                        AdvancedButtonText = &View Files
                        CleanupString = c:\tpc.exe
                        CSIDL = 0x00000026
                        Description = Old temporary files.
                        Display = The Phone Company Files
                        FileList = *.tmp|*.tpc
                        Flags = 0x10000021
                        Folder = \The Phone Company\Temp
                        IconPath = c:\Program Files\The Phone Company\tpc.dll,2
                        LastAccess = 0x0000000e
                        Priority = 200
                        PropertyBag = {Property Bag CLSID GUID}