Condividi tramite


Creazione di un gestore di pulizia del disco

Un assiom comprovato tempo e di nuovo nel mondo dei computer è che, indipendentemente dalle dimensioni della capacità di archiviazione del computer, alla fine lo riempirai. Anche se le dimensioni medie del disco rigido di un computer sono aumentate notevolmente nel tempo, le applicazioni sono aumentate di conseguenza, lasciando agli utenti la ricerca di modi per creare più spazio libero su disco rigido. Lo spazio disponibile è ridotto anche dai numerosi file temporanei creati dalle applicazioni per motivi di backup o prestazioni. Quando lo spazio su disco diventa basso, diventa necessario ridurre la quantità di spazio usata dalle applicazioni. Lo spazio su disco può essere liberato usando diversi mezzi, tra cui i seguenti:

  • Eliminazione di file.
  • Compressione dei file.
  • Spostamento di file in un supporto di backup.
  • Trasferimento di file in un server remoto.

I file idonei per la pulizia includono:

  • File che l'utente non avrà mai più bisogno.
  • File temporanei esistenti solo per motivi di prestazioni.
  • File che possono essere ripristinati, se necessario, da un CD di installazione.
  • File di dati che potrebbero essere stati sostituiti da versioni più recenti, ad esempio i file di backup precedenti.
  • File meno recenti che non sono stati usati da molto tempo.

L'eliminazione è particolarmente appropriata per i file che l'utente non avrà mai più bisogno, ad esempio, di file che vengono temporaneamente memorizzati nella cache per motivi di prestazioni. L'eliminazione è appropriata anche per i file che vengono facilmente ripristinati, ad esempio file grafici che possono essere ricaricati da un CD di installazione. I file che l'utente potrebbe avere bisogno in un secondo momento o che sarebbe difficile ricostruire sono candidati migliori per la compressione o il backup.

Aspettarsi che un utente pulisca manualmente il file system non sia una soluzione valida. L'utente potrebbe non sapere dove si trovano molti dei file o come riconoscere quali possono essere rimossi in modo sicuro. Inoltre, c'è il rischio che l'utente possa eliminare i file essenziali.

In questo argomento vengono illustrati i facet seguenti dell'utilità Pulizia disco.

Utilità di pulizia disco di Windows

A partire da Windows 98, il sistema operativo Windows include Pulizia disco, un'utilità che rende molto più semplice per l'utente gestire lo spazio disponibile su disco rigido. L'utilità Pulizia disco è progettata per liberare il maggior numero possibile di spazio su disco e ridurre il rischio che l'utente elimini accidentalmente i file essenziali.

La pulizia del disco può essere avviata in tre modi.

  • L'utente può avviare la pulizia del disco facendo clic su Avvia; puntando a Tutti i programmi, accessori e strumenti di sistema; e quindi fare clic su Pulizia disco.
  • Il sistema invia una notifica all'utente con una finestra di messaggio che lo spazio su disco inutilizzato ha raggiunto la modalità critica. La soglia della modalità critica per un'unità superiore a 2,25 gigabyte (GB) è di 200 megabyte (MB). Gli avvisi successivi vengono visualizzati a 80, 50 e 1 MB. L'utente ha la possibilità di liberare spazio su disco manualmente o avviare l'utilità Pulizia disco.
  • L'utente può avere la Creazione guidata attività pianificata di Windows (nota come Manutenzione guidata nei sistemi precedenti) eseguire automaticamente l'utilità Pulizia disco in orari pianificati.

La sfida di base nella pulizia del disco consiste nel liberare il maggior numero possibile di spazio su disco senza eliminare i file essenziali. Poiché non esiste un modo standard per contrassegnare i file per la pulizia, nessuna singola applicazione può rilevare e pulire in modo affidabile tutti i file non essenziali. L'utilità Pulizia disco risolve questo problema suddividendo l'operazione di pulizia tra un singolo gestore di pulizia del disco e una raccolta di gestori di pulizia del disco.

Quando viene eseguita l'utilità Pulizia disco, l'utente visualizza la finestra di dialogo seguente. Se nel computer sono presenti più partizioni disco o disco, all'utente viene chiesto di scegliere un'unità prima che venga visualizzata la finestra di dialogo.

screenshot della finestra di dialogo di pulizia

Gestione pulizia disco fa parte del sistema operativo. Visualizza la finestra di dialogo visualizzata nella figura precedente, gestisce l'input dell'utente e gestisce l'operazione di pulizia. La selezione effettiva e la pulizia dei file non necessari vengono eseguite dai singoli gestori di pulizia del disco visualizzati nella casella di riepilogo di Gestione pulizia disco. L'utente ha la possibilità di abilitare o disabilitare i singoli gestori selezionando o deselezionando la casella di controllo nell'interfaccia utente di Gestione pulizia disco.

Ogni gestore è responsabile di un set ben definito di file. Ad esempio, il gestore selezionato nell'illustrazione è responsabile della pulizia dei file di programma scaricati. Il gestore selezionato nell'illustrazione fornisce anche un pulsante Visualizza file . Facendo clic sul pulsante, l'utente può richiedere che il gestore visualizzi un'interfaccia utente in genere una finestra di Esplora risorse che consenta all'utente di specificare quali file o classi di file pulire.

Anche se Windows include diversi gestori di pulizia del disco, non sono progettati per gestire i file prodotti da altre applicazioni. Il gestore pulizia dischi è invece progettato per essere flessibile ed estendibile consentendo a qualsiasi sviluppatore di implementare e registrare il proprio gestore di pulizia del disco. Qualsiasi sviluppatore può estendere i servizi di pulizia dei dischi disponibili implementando e registrando un gestore di pulizia del disco.

Tutte le applicazioni che producono file temporanei possono e devono implementare e registrare un gestore di pulizia del disco. In questo modo gli utenti offrono agli utenti un modo pratico e affidabile per gestire i file temporanei dell'applicazione. Quando si implementa il gestore, è possibile decidere quali file sono interessati e determinare come viene eseguita la pulizia effettiva.

Nozioni di base sull'implementazione

I gestori di pulizia sono oggetti COM (Component Object Model) del server in-process. Windows fornisce un oggetto gestore esistente denominato DataDrivenCleaner per l'uso. È anche possibile scegliere di implementare manualmente un gestore per una maggiore flessibilità. Questi oggetti consentono quindi di specificare come selezionare i file, liberare spazio su disco e, nel caso di un gestore implementato, visualizzare l'interfaccia utente facoltativa per un controllo più granulare. In questa sezione viene affrontata la questione dell'implementazione del proprio gestore. Per informazioni dettagliate sull'uso dell'oggetto DataDrivenCleaner, vedere Utilizzo dell'oggetto DataDrivenCleaner.

Un gestore di pulizia del disco deve eseguire queste cinque attività di base.

  • Inizializzare l'oggetto gestore.
  • Analizzare il disco per determinare la quantità di spazio su disco che può essere liberata.
  • Visualizzare l'interfaccia utente per ottenere commenti e suggerimenti degli utenti sui file da pulire. Facoltativa
  • Eseguire la pulizia.
  • Spegni.

Per consentire alla gestione della pulizia del disco di gestire queste attività, un gestore deve esportare IEmptyVolumeCache per Windows 98 o IEmptyVolumeCache2 per Windows Millennium Edition (Windows Me), Windows 2000 e Windows XP. Poiché IEmptyVolumeCache2 eredita da IEmptyVolumeCache, aggiungendo solo il metodo aggiuntivo InitializeEx, per implementare entrambi è necessario un lavoro aggiuntivo relativamente poco. A meno che il gestore non sia destinato solo a uno di questi sistemi operativi, deve esportare entrambe le interfacce.

Per esportare queste interfacce, è necessario implementare questi metodi corrispondenti alle cinque attività di base.

Initialize/InitializeEx

I due metodi di inizializzazione, molto simili, vengono chiamati quando viene eseguita l'utilità Pulizia disco. Gestione pulizia dischi di Windows 98 chiama il metodo IEmptyVolumeCache::Initialize di un gestore. Windows Millennium Edition (Windows Me), Windows 2000 o Gestione pulizia dischi Windows XP, tuttavia, tenta prima di tutto di chiamare IEmptyVolumeCache2::InitializeEx e usa solo IEmptyVolumeCache::Initialize se IEmptyVolumeCache2 non è esposto dal gestore. Gestione pulizia disco passa informazioni al metodo, ad esempio la chiave del Registro di sistema del gestore e il volume del disco da pulire.

Entrambi i metodi possono restituire varie stringhe di visualizzazione e impostare uno o più flag. La differenza principale tra i due metodi consiste nel modo in cui viene gestito il testo visualizzato nel gestore pulizia dischi. Le tre stringhe seguenti sono interessate.

string Scopo Initialize InitializeEx
Nome visualizzato Il nome del gestore visualizzato nella casella di riepilogo di Gestione pulizia disco. Se ppwszDisplayName è NULL, il valore predefinito viene recuperato dal Registro di sistema. Una stringa localizzata correttamente deve essere specificata in ppwszDisplayName senza utilizzare valori del Registro di sistema.
Descrizione Testo descrittivo visualizzato sotto la casella di riepilogo quando viene selezionato il nome del gestore. Se ppwszDescription è NULL, il valore predefinito viene recuperato dal Registro di sistema. È necessario specificare una stringa localizzata correttamente in ppwszDescription senza utilizzare valori del Registro di sistema.
Testo pulsante Testo per il pulsante facoltativo che consente agli utenti di visualizzare l'interfaccia utente del gestore. Nessun parametro disponibile. Deve essere specificato nel Registro di sistema. È necessario specificare una stringa localizzata correttamente in ppwszBtnText senza utilizzare valori del Registro di sistema.

Il parametro pdwFlags trovato in entrambi i metodi di inizializzazione riconosce lo stesso set di flag. Due di questi flag vengono passati al metodo dal gestore pulizia dischi.

  • EVCF_SETTINGSMODE

    Se la gestione pulizia disco viene eseguita in base a una pianificazione, imposta il flag di EVCF_SETTINGSMODE . Se questo flag è impostato, gestione pulizia disco non chiama i metodi GetSpaceUsed, Purge o ShowProperties . Il metodo Initialize o InitializeEx del gestore deve gestire tutte le attività eseguite normalmente da GetSpaceUsed e Purge. Poiché non è possibile inviare commenti e suggerimenti degli utenti, è consigliabile toccare solo i file estremamente sicuri da pulire. È consigliabile ignorare il parametro pcwszVolume del metodo di inizializzazione e pulire i file non necessari indipendentemente dall'unità su cui si trovano.

  • EVCF_OUTOFDISKSPACE

    Se il flag di EVCF_OUTOFDISKSPACE è impostato, l'unità disco dell'utente è un'unità disco molto breve. Il gestore deve essere aggressivo per eliminare i file, anche se comporta una perdita di prestazioni. Tuttavia, il gestore ovviamente non deve eliminare i file che causano un errore di un'applicazione o l'utente perde i dati.

I flag rimanenti vengono impostati dal gestore di pulizia del disco e restituiti al gestore di pulizia del disco. Per altre informazioni, vedere le pagine di riferimento del metodo per IEmptyVolumeCache::Initialize e IEmptyVolumeCache2::InitializeEx.

  • EVCF_DONTSHOWIFZERO

    Visualizzare il gestore nella casella di riepilogo di Gestione pulizia disco solo se il valore restituito da GetSpaceUsed indica che il gestore può liberare spazio su disco.

  • EVCF_ENABLEBYDEFAULT

    Specifica che il gestore è abilitato per impostazione predefinita. Verrà eseguito ogni volta che viene eseguita una pulizia del disco, a meno che l'utente non la disabilita deselezionando la relativa casella di controllo nell'elenco dei gestori di pulizia del disco.

  • EVCF_ENABLEBYDEFAULT_AUTO

    Specifica che il gestore viene abilitato automaticamente per l'esecuzione durante le operazioni di pulizia pianificate.

  • EVCF_HASSETTINGS

    Impostare questo flag se il gestore ha un'interfaccia utente da visualizzare. In risposta, gestione pulizia disco visualizza un pulsante quando tale gestore è selezionato nella casella di riepilogo. Se si fa clic su tale pulsante, gestione pulizia disco chiama ShowProperties.

  • EVCF_REMOVEFROMLIST

    Eliminare il nome del gestore dall'elenco dei gestori disponibili dopo l'esecuzione del gestore una sola volta. Vengono eliminate anche le informazioni del Registro di sistema del gestore.

GetSpaceUsed

Gestione pulizia disco chiama questo metodo per determinare la quantità di spazio che un gestore di pulizia del disco può potenzialmente liberare. Gestione pulizia disco visualizza quindi tale valore a destra del nome del gestore nella casella di riepilogo. Questa operazione viene eseguita su tutti i gestori registrati con gestione pulizia disco all'avvio del gestore e prima che venga visualizzata l'interfaccia utente principale del gestore. Quando viene chiamato GetSpaceUsed , il gestore deve analizzare i file di cui è responsabile, determinare quali sono candidati per la pulizia e restituire la quantità di spazio su disco che può liberare.

Poiché l'analisi può essere un processo lungo, gestione pulizia disco usa il parametro picb di questo metodo per passare un puntatore a un'interfaccia IEmptyVolumeCacheCallBack . Il gestore usa periodicamente l'interfaccia durante l'analisi per chiamare IEmptyVolumeCacheCallBack::ScanProgress, che serve due scopi.

  • Consente al gestore di pulizia del disco di aggiornare un indicatore di stato, informando l'utente dell'avanzamento dell'analisi.
  • Notifica al gestore di arrestare l'analisi nel caso in cui venga fatto clic sul pulsante Annulla della finestra di stato. L'evento del pulsante non viene comunicato direttamente al gestore; In alternativa, la gestione pulizia disco restituisce E_ABORT la volta successiva che GetSpaceUsed chiama IEmptyVolumeCacheCallBack::ScanProgress.

ShowProperties

Prima di avviare la pulizia, il gestore può visualizzare un'interfaccia utente in genere sotto forma di una finestra di Esplora risorse che consente all'utente di visualizzare un elenco di file o classi di file selezionati per la pulizia dal gestore. Se il gestore imposta il flag EVCF_HASSETTINGS quando viene chiamato Initialize o InitializeEx, l'utente può richiedere l'interfaccia utente facendo clic sul pulsante visualizzato a tale scopo nella gestione pulizia del disco. Il testo del pulsante varia dal gestore al gestore, ma "Visualizza file", "Visualizza pagine" e "Opzioni" sono etichette comuni.

Quando si fa clic sul pulsante, gestione pulizia disco chiama ShowProperties per richiedere al gestore di visualizzare l'interfaccia utente. L'interfaccia utente deve essere creata come elemento figlio della finestra il cui handle viene passato nel parametro hwnd del metodo ShowProperties.

Ripulisci

Gestione pulizia disco chiama il metodo Purge del gestore per impostare la pulizia in movimento. Il parametro picb del metodo è un puntatore all'interfaccia IEmptyVolumeCacheCallBack di Gestione pulizia disco. Come per il metodo GetSpaceUsed , il gestore deve usare periodicamente l'interfaccia di callback per segnalare lo stato di avanzamento ed eseguire una query su Gestione pulizia disco se l'utente ha fatto clic su Annulla. Si noti tuttavia che il metodo Purge deve chiamare IEmptyVolumeCacheCallBack::P urgeProgress, non ScanProgress.

Disattivare

Il metodo Deactivate viene chiamato quando il gestore pulizia disco si prepara per l'arresto. Il gestore deve eseguire le attività di pulizia necessarie e restituire. Se non si vuole che il gestore venga eseguito di nuovo, impostare il flag EVCF_REMOVEFROMLIST nel parametro pdwFlags del metodo di inizializzazione. Se questo flag è impostato, gestione pulizia disco rimuove il gestore dall'elenco ed elimina le voci del Registro di sistema del gestore. È necessario aggiungere nuovamente le voci del Registro di sistema per eseguire di nuovo il gestore. Questo flag viene in genere usato per i gestori che vengono eseguiti una sola volta.

Registrazione di un gestore pulizia disco

Per aggiungere un gestore all'elenco di Gestione pulizia dischi, è necessario aggiungere alcune chiavi e valori al Registro di sistema di Windows.

Registrazione del CLSID di un gestore

Come per tutti gli oggetti COM, il GUID e la DLL dell'oggetto gestore devono essere registrati nella chiave CLSID in HKEY_CLASSES_ROOT. È anche possibile registrare un'icona visualizzata accanto al nome del gestore nella casella di riepilogo di Gestione pulizia disco, ma questa opzione è facoltativa. L'esempio seguente mostra le chiavi, i valori e i dati coinvolti.

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

Registrazione di un gestore con Gestione pulizia disco: Generale

Per completare la registrazione, un gestore deve aggiungere una chiave contenente le specifiche, come illustrato di seguito. Nella parte restante di questa sezione viene illustrato il contenuto di questa chiave.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  VolumeCaches
                     Handler's Key

In generale, il nome della chiave che contiene i particolari di un gestore è denominato per il tipo di file gestito, ad esempio Programmi scaricati, ma non è un requisito. Nella tabella seguente vengono illustrati in dettaglio i valori possibili trovati in questa chiave.

Nota

Solo il valore predefinito che specifica l'identificatore di classe del gestore (CLSID) è necessario che tutti gli altri valori siano facoltativi.

Valore Type Significato
Predefinito REG_SZ CLSID del gestore registrato in HKEY_CLASSES_ROOT\CLSID.
AdvancedButtonText REG_SZ Testo per il pulsante facoltativo che gli utenti possono fare clic per visualizzare l'interfaccia utente del gestore. Il carattere & può essere posizionato prima di un carattere per assegnare un tasto di scelta rapida per il pulsante. Il valore AdvancedButtonText viene ignorato dai gestori che espongono IEmptyVolumeCache2::InitializeEx.
CleanupString REG_SZ Riga di comando che specifica un file eseguibile e parametri della riga di comando facoltativi. Questa riga di comando viene eseguita al completamento della pulizia del disco.
CSIDL REG_DWORD Identificatore indipendente dal sistema per una cartella speciale da includere nella ricerca di file. Questo valore deve essere immesso come valore numerico, ad esempio 0x0000001c anziché CSIDL_LOCAL_APPDATA. Per un elenco di valori possibili, vedere CSIDL. È possibile usare solo un singolo valore.
Se viene specificato il valore Folder, il percorso indicato dal valore CSIDL viene preceduto da tali informazioni per comporre un percorso di ricerca. Si consideri, ad esempio, lo scenario seguente.
  • Il valore CSIDL viene specificato come 0x0000000d (CSIDL_MYMUSIC)
  • La cartella My Music si trova in C:\Documents and Settings\username\My Music
  • Il valore Folder contiene "Jazz\Singers"
Il risultato di questo scenario è che il gestore di pulizia del disco cerca la cartella C:\Documents and Settings\username\My Music\Jazz\Singers. Si noti che la barra precedente al valore Cartella viene aggiunta se non è presente.
Descrizione REG_SZ Testo descrittivo visualizzato sotto la casella di riepilogo di Gestione pulizia dischi quando viene selezionato il nome del gestore. Qui è possibile spiegare cosa fa il gestore, quali file si preoccupano di se stessi e qualsiasi altra informazione chiaridatoria all'utente. Se IEmptyVolumeCache2::InitializeEx non è esposto dal gestore, questo testo può essere sottoposto a override tramite il metodo IEmptyVolumeCache::Initialize specificando una stringa alternativa nel parametro ppwszDescription quando viene chiamato il metodo.
Visualizza REG_SZ Il nome del gestore da visualizzare nella casella di riepilogo di Gestione pulizia dischi. Se IEmptyVolumeCache2::InitializeEx non è esposto dal gestore, questo testo può essere sottoposto a override tramite il metodo IEmptyVolumeCache::Initialize specificando una stringa alternativa nel parametro ppwszDisplayName quando viene chiamato il metodo.
FileList REG_SZ o REG_MULTI_SZ Elenco di file cercati e puliti da questo gestore. È possibile specificare caratteri jolly usando ? o * caratteri. Se il valore è di tipo REG_SZ, più estensioni vengono separate usando | o : caratteri, senza spazi su entrambi i lati.
Se il flag DDEVCF_REMOVEDIRS è impostato nel valore Flags, questi valori possono specificare nomi di directory e file.
Flags REG_DWORD o REG_BINARY Contrassegna il controllo degli elementi della procedura di ricerca e pulizia. Uno o più dei valori seguenti.
  • DDEVCF_DOSUBDIRS (0x00000001). Cercare e rimuovere ricorsivamente.
  • DDEVCF_REMOVEAFTERCLEAN (0x00000002). Dopo l'esecuzione del gestore una volta, rimuoverla dal Registro di sistema.
  • DDEVCF_REMOVEREADONLY (0x00000004). Rimuovere i file che soddisfano i criteri di ricerca anche se sono di sola lettura.
  • DDEVCF_REMOVESYSTEM (0x00000008). Rimuovere i file che soddisfano i criteri di ricerca anche se sono file di sistema.
  • DDEVCF_REMOVEHIDDEN (0x00000010). Rimuovere i file che soddisfano i criteri di ricerca anche se sono file nascosti.
  • DDEVCF_DONTSHOWIFZERO (0x00000020). Non visualizzare questo gestore nella gestione pulizia dischi se nessun file corrisponde ai criteri di ricerca.
  • DDEVCF_REMOVEDIRS (0x00000040). Trovare la corrispondenza tra il valore FileList e le directory e rimuovere le corrispondenze e tutte le sottodirectory.
  • DDEVCF_RUNIFOUTOFDISKSPACE (0x00000080). Eseguire questo gestore solo se lo spazio su disco disponibile è diminuito al di sotto del valore critico, determinato dalla gestione pulizia dischi impostando il flag EVCF_OUTOFDISKSPACE tramite IEmptyVolumeCache::Initialize o IEmptyVolumeCache2::InitializeEx.
  • DDEVCF_REMOVEPARENTDIR (0x00000100). Rimuovere la directory padre dei file specificati dopo l'esecuzione del pulitore.
  • DDEVCF_PRIVATE_LASTACCESS (0x10000000). Utilizzare il valore LastAccess, se specificato, per verificare quali file devono essere puliti. Questo flag viene ignorato quando si usa dataDrivenCleaner qualsiasi valore LastAccess specificato viene sempre usato.
Cartella REG_SZ, REG_MULTI_SZ o REG_EXPAND_SZ Una cartella o cartelle specifiche per cercare voci corrispondenti nel valore FileList. È possibile specificare caratteri jolly usando ? o * caratteri. Se il valore è di tipo REG_SZ, vengono separati più nomi di cartelle usando | carattere, senza spazi su entrambi i lati.
Se è presente un valore CSIDL, è possibile specificare una sola cartella in questo valore. Il percorso indicato dal valore CSIDL viene preceduto da tale percorso di cartella per comporre un percorso di ricerca. Per un esempio, vedere la descrizione del valore CSIDL.
Se questo valore è assente in Windows Vista Service Pack 1 (SP1) e versioni successive, il gestore di pulizia viene ignorato e restituisce S_FALSE all'inizializzazione.
Se questo valore è assente nella versione originale di Windows Vista e versioni precedenti, viene usata la cartella radice del volume corrente. Il flag DDEVCF_DOSUBDIRS è necessario in quel caso per cercare l'intera unità. Senza di esso, viene eseguita solo la ricerca della cartella radice stessa.
È necessario specificare un'unità o un'unità. Questa opzione può essere fornita tramite il valore CSIDL o tramite una stringa di REG_EXPAND_SZ. Barrando queste opzioni, tuttavia, l'unità da cercare deve essere specificata nel nome della cartella. Usare ?: per cercare la cartella nell'unità corrente.
IconPath REG_SZ o REG_EXPAND_SZ Percorso della risorsa da cui ottenere un'icona da usare in associazione al gestore.
LastAccess REG_DWORD o REG_BINARY Numero di giorni che devono essere trascorsi poiché un file è stato eseguito l'ultimo accesso o è stata creata una directory per tale file o directory da considerare per la pulizia.
Priorità REG_DWORD o REG_BINARY Determina l'ordine di esecuzione del gestore rispetto ad altri gestori. Maggiore è il numero, più precedente nel processo eseguito dal gestore. Nessun intervallo definito è accettabile.
Propertybag REG_SZ CLSID di una risorsa utilizzata per fornire testo localizzato per il nome visualizzato, la descrizione e il testo del pulsante. Questa risorsa è utile nella situazione in cui un gestore non implementa IEmptyVolumeCache e il gestore viene eseguito in Microsoft Windows NT o Windows XP.
La gestione pulizia dischi controlla innanzitutto se la routine di inizializzazione del gestore ha restituito tali stringhe, come avvierà quando viene implementato IEmptyVolumeCache2 . In caso contrario, il manager passa a un contenitore di proprietà denominato in questo valore. Se nessuna è stata fornita, recupera il testo dal Registro di sistema.
StateFlags REG_DWORD Eseguendo il file eseguibile di Gestione pulizia dischi Cleanmgr.exe da una riga di comando, è possibile dichiarare i profili di pulizia. Questi profili sono costituiti da un subset dei gestori disponibili e vengono assegnati un'etichetta numerica univoca. In questo modo è possibile automatizzare l'esecuzione di diversi set di gestori in momenti diversi.
La riga di comando "cleanmgr.exe /sageset:nnnn", dove nnnn è un'etichetta numerica univoca, visualizza un'interfaccia utente che consente di scegliere i gestori da includere in tale profilo. Oltre a definire il profilo, il parametro sageset scrive anche un valore denominato StateFlagsnnnn, dove nnnn è l'etichetta usata nel parametro, per tutte le sottochiavi in VolumeCaches. Esistono due possibili valori di dati per tali voci.
  • 0: Non eseguire questo gestore quando viene eseguito questo profilo.
  • 2: Includere questo gestore quando questo profilo viene eseguito.

Si supponga, ad esempio, che venga eseguita la riga di comando "cleanmgr.exe /sageset:1234". Nell'interfaccia utente presentata, l'utente sceglie File di programma scaricati, ma non sceglie File Internet temporanei. I valori seguenti vengono quindi scritti nel Registro di sistema.
HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  VolumeCaches
                     Downloaded Program Files
                        StateFlags1234 = 0x00000002
                     Internet Cache Files
                        StateFlags1234 = 0x00000000

La riga di comando "cleanmgr.exe /sagerun:nnnn", dove il valore di nnnn corrisponde all'etichetta dichiarata con il parametro sageset, esegue tutti i gestori selezionati in tale profilo.
Un valore stateFlags generico viene scritto nel Registro di sistema quando la pulizia del disco viene eseguita normalmente. Questo valore archivia semplicemente lo stato (controllato o deselezionato) del gestore l'ultima volta che è stato presentato come opzione all'utente. Esistono due possibili valori di dati per tali voci.
  • 0: il gestore non è stato selezionato.
  • 1: il gestore è stato selezionato.

Registrazione di un gestore con Gestione pulizia dischi: Windows 2000 o versioni successive

La specifica del testo visualizzato nel Registro di sistema può rendere difficile localizzare il software. Per questo motivo, Windows 2000 e Windows XP supportano l'interfaccia IEmptyVolumeCache2 con il metodo di inizializzazione preferito InitializeEx. In Windows 2000 o versioni successive viene sempre eseguito un tentativo di chiamare IEmptyVolumeCache2::InitializeEx prima diIEmptyVolumeCache::Initialize. Il sistema usa solo Initialize per inizializzare un gestore se IEmptyVolumeCache2 non è esposto .

Per quanto riguarda il Registro di sistema, l'unica differenza in Windows 2000 o versione successiva è che è possibile omettere i valori AdvancedButtonText, Display e Description quando IEmptyVolumeCache2::InitializeEx viene esposto dal gestore. Questi valori, contenenti testo localizzato correttamente, vengono forniti alla gestione pulizia dischi quando chiama InitializeEx.

Uso dell'oggetto DataDrivenCleaner

Un gestore di pulizia del disco di base, denominato DataDrivenCleaner, viene fornito dal sistema operativo. Per usare questo oggetto come gestore anziché implementare il proprio, usare CLSID {C0E13E61-0CC6-11d1-BBB6-006060978B2AE6} come valore predefinito per la sottochiave del gestore in VolumeCaches , come descritto in Registrazione di un gestore con Gestione pulizia dischi: Generale.

DataDrivenCleaner non espone IEmptyVolumeCache2, quindi i valori Display e Description vengono forniti tramite il Registro di sistema. Quando si dichiarano queste stringhe, tenere presente che questo potrebbe causare problemi di localizzazione. Il testo localizzato può essere fornito tramite il valore PropertyBag. Il valore AdvancedButtonText viene ignorato poiché nessuna interfaccia utente e quindi nessun pulsante per visualizzarlo è disponibile per questo gestore.

Registrazione di esempio di un gestore di pulizia dischi

Di seguito viene illustrata una registrazione di esempio per un gestore di pulizia del disco implementato da The Phone Company. Questo gestore implementa sia IEmptyVolumeCache che IEmptyVolumeCache2 e fornisce quindi i valori AdvancedButtonText, Description e Display nel caso in cui venga usato in un computer che esegue Windows 98. Il gestore combina i valori CSIDL e Folder per cercare i file nella directory C:\Program Files\The Phone Company\Temp e il flag di DDEVCF_DOSUBDIRS viene impostato in modo che vengano eseguite ricerche anche nelle sottodirectory. Solo i file con estensione tmp e tpc vengono considerati per la pulizia e il flag di DDEVCF_PRIVATE_LASTACCESS viene impostato in modo che i file non siano stati accessibili solo per 14 giorni o più. Il flag di DDEVCF_DONTSHOWIFZERO viene impostato anche in modo che il gestore non venga visualizzato nell'elenco a meno che non abbia trovato candidati di pulizia.

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}