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

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

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

クリーンアップの候補として、次のようなファイルがあります。

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

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

ユーザーがファイル システムを手動でクリーンアップする場合は、良い解決策ではありません。 ユーザーは、多くのファイルがどこにあるか、または安全に削除できるファイルを認識する方法を知らない場合があります。 さらに、ユーザーが重要なファイルを削除するリスクがあります。

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

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

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

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

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

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

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

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

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

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

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

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

実装の基本

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

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

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

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

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

Initialize/InitializeEx

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

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

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

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

  • EVCF _ SETTINGSMODE

    ディスククリーンアップマネージャーがスケジュールに基づいて実行されている場合は、 Evcf _ settingsmode フラグが設定されます。 このフラグが設定されている場合、ディスククリーンアップマネージャーでは、 Getspace usedPurge、または showproperties メソッドは呼び出されません。 ハンドラーの Initialize メソッドまたは InitializeEx メソッドは、 getspace used および Purgeによって通常実行されるすべてのタスクを処理する必要があります。 ユーザーからのフィードバックを得ることはできないため、クリーンアップするのに非常に安全なファイルのみを操作する必要があります。 初期化メソッドの pcwszVolume パラメーターを無視し、どのドライブが使用されているかに関係なく、不要なファイルをクリーニングする必要があります。

  • EVCF _ OUTOFDISKSPACE

    Evcf _ OUTOFDISKSPACE フラグが設定されている場合、ユーザーのディスクドライブの容量は非常に短くなります。 ハンドラーは、パフォーマンスが低下する場合でも、ファイルの削除を積極的に行う必要があります。 ただし、このハンドラーでは、アプリケーションが失敗したりユーザーがデータを失う原因となるファイルを削除しないようにする必要があります。

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

  • EVCF _ DONTSHOWIFZERO

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

  • EVCF _ ENABLEBYDEFAULT デフォルト)

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

  • EVCF _ ENABLEBYDEFAULT ( _ 自動)

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

  • EVCF _ HASSETTINGS

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

  • EVCF _ REMOVEFROMLIST

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

Getspace Used

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

スキャンには時間がかかる場合があるため、ディスククリーンアップマネージャーでは、このメソッドの IEmptyVolumeCacheCallBackインターフェイスへのポインターを渡すために、このメソッドの ピクチャ パラメーターを使用します。 このハンドラーは、2つの目的で実行される IEmptyVolumeCacheCallBack:: ScanProgressを呼び出すために、スキャン中にこのインターフェイスを定期的に使用します。

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

ShowProperties

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

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

消去

ディスククリーンアップマネージャーは、ハンドラーの Purge メソッドを呼び出して、モーションのクリーンアップを設定します。 メソッドの IEmptyVolumeCacheCallBack パラメーターは、ディスククリーンアップマネージャーのインターフェイスへのポインターです Getspace usedメソッドと同様に、ハンドラーは、コールバックインターフェイスを定期的に使用して進行状況を報告し、ユーザーが [キャンセル] をクリックしたかどうかをディスククリーンアップマネージャーに問い合わせます。 ただし、 Purge メソッドは IEmptyVolumeCacheCallBack::P urgeprogressを呼び出す必要があることに注意してください。これは、 scanprogressではありません。

非アクティブ化

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

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

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

ハンドラーの CLSID の登録

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

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 HKEY_CLASSES_ROOTclsid に登録されているハンドラーの clsid \
Advanced Buttontext REG_SZ ユーザーがクリックしてハンドラーの UI を表示できるオプションボタンのテキスト。 & 文字を文字の前に配置して、ボタンのショートカットキーを割り当てることができます。 IEmptyVolumeCache2:: InitializeExを公開するハンドラーでは、Advanced buttontext の値は無視されます。
CleanupString REG_SZ 実行可能ファイルとオプションのコマンドラインパラメーターを指定するコマンドライン。 このコマンドラインは、ディスククリーンアップの完了時に実行されます。
CSIDL REG_DWORD ファイル検索に含める特別なフォルダーの、システムに依存しない識別子。 この値は、CSIDL_LOCAL_APPDATA ではなく、0x0000001c のインスタンスの数値として入力する必要があります。 使用可能な値の一覧については、「 CSIDL」を参照してください。 使用できる値は1つだけです。
フォルダーの値が指定されている場合、検索パスを構成するために、CSIDL 値によって示される場所がその情報の前に付加されます。 たとえば、次のシナリオについて考えてみます。
  • CSIDL 値は 0x0000000d (CSIDL_MYMUSIC) として指定されます。
  • マイミュージックフォルダーは c:\documents and にあり、\ユーザー名\My ミュージックに設定ます。
  • フォルダーの値には Jazz\Singers が含まれています ""
このシナリオの結果として、ディスククリーンアップハンドラによって c:\documents and と設定 \username\My Music\Jazz\Singers フォルダが検索されます。 フォルダーの値の前にあるスラッシュが追加されていることに注意してください。
説明 REG_SZ ハンドラーの名前を選択したときに、ディスククリーンアップマネージャーのリストボックスの下に表示される説明テキスト。 ここでは、ハンドラーの動作、それ自体がどのファイルに関係しているか、およびユーザーに elucidatory その他の情報について説明します。 IEmptyVolumeCache2:: InitializeExがハンドラーによって公開されていない場合、このテキストは、メソッドが呼び出されたときにppwszDescriptionパラメーターで代替文字列を指定することによって、ハンドラーのIEmptyVolumeCache:: Initializeメソッドを使用してオーバーライドできます。
表示 REG_SZ ディスククリーンアップマネージャーのリストボックスに表示されるハンドラーの名前。 IEmptyVolumeCache2:: InitializeExがハンドラーによって公開されていない場合、このテキストは、メソッドが呼び出されたときにppwszDisplayNameパラメーターで代替文字列を指定することによって、ハンドラーのIEmptyVolumeCache:: Initializeメソッドを使用してオーバーライドできます。
FileList REG_SZ または REG_MULTI_SZ このハンドラーによって検索およびクリーニングされたファイルのリスト。 ワイルドカードは、を使用して指定できます。 または * 文字。 値が REG_SZ 型の場合は、| を使用して複数の拡張機能が分離されます。または: 文字の両側にスペースがありません。
Flags 値に DDEVCF_REMOVEDIRS フラグが設定されている場合、これらの値ではディレクトリ名とファイルを指定できます。
フラグ REG_DWORD または REG_BINARY 検索およびクリーニングの手順の要素を制御するフラグ。 次の値の1つまたは複数です。
  • DDEVCF_DOSUBDIRS (0x00000001)。 再帰的に検索して削除します。
  • DDEVCF_REMOVEAFTERCLEAN (0x00000002)。 ハンドラーが一度実行された後、それをレジストリから削除します。
  • 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 値が常に使用されている場合には無視されます。
フォルダー 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 フラグが必要です。 使用しない場合は、ルートフォルダー自体だけが検索されます。
1つまたは複数のドライブを指定する必要があります。 これは、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 値は、ディスククリーンアップが正常に実行されたときにレジストリに書き込まれます。 この値は、ユーザーにオプションとして最後に提示されたときに、ハンドラーの状態 (checked または unchecked) を格納するだけです。 これらのエントリには、2つのデータ値を使用できます。
  • 0: ハンドラーは選択されませんでした。
  • 1: ハンドラーが選択されました。

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

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

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

Datadriのクリーナーオブジェクトの使用

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

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

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

電話会社によって実装されているディスククリーンアップハンドラーの登録例を次に示します。 このハンドラーは、 IEmptyVolumeCacheIEmptyVolumeCache2の両方を実装しているため、Windows 98 を実行しているコンピューターで使用されている場合は、buttontext、Description、および Display の値が表示されます。 ハンドラーは CSIDL とフォルダーの値を結合して、C: Program ファイル内のファイルを検索します。このディレクトリには \ \ 電話企業の \ 一時ディレクトリがあり、ddevcf _ DOSUBDIRS フラグは、サブディレクトリも検索されるように設定されています。 .Tmp 拡張子と tpc 拡張子を持つファイルのみがクリーンアップ対象と見なされ、DDEVCF _ プライベート _ lastaccess フラグが設定され、これらのファイルから除外され、14日間以上アクセスされていないファイルのみが対象となります。 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}