Création d’un gestionnaire de nettoyage de disque

Un axiome prouvé à maintes reprises dans le monde des ordinateurs est que quelle que soit la taille de la capacité de stockage de votre ordinateur, vous finirez par le remplir. Bien que la taille moyenne du disque dur d’un ordinateur ait considérablement augmenté au fil du temps, les applications ont également augmenté en conséquence, laissant les utilisateurs à la recherche de moyens de créer plus d’espace libre sur le disque dur. L’espace disponible est également réduit par les nombreux fichiers temporaires créés par les applications pour des raisons de sauvegarde ou de performances. Lorsque l’espace disque devient faible, il devient nécessaire de réduire la quantité d’espace utilisée par les applications. L’espace disque peut être libéré à l’aide de divers moyens, notamment :

  • Suppression de fichiers.
  • Compression des fichiers.
  • Déplacement de fichiers vers un support de sauvegarde.
  • Transfert de fichiers vers un serveur distant.

Les fichiers qui sont de bons candidats pour le nettoyage sont les suivants :

  • Fichiers dont l’utilisateur n’aura plus besoin.
  • Fichiers temporaires qui existent uniquement pour des raisons de performances.
  • Fichiers qui peuvent être restaurés, si nécessaire, à partir d’un CD d’installation.
  • Fichiers de données qui ont peut-être été remplacés par des versions plus récentes, telles que les anciens fichiers de sauvegarde.
  • Fichiers plus anciens qui n’ont pas été utilisés depuis longtemps.

La suppression est particulièrement appropriée pour les fichiers dont l’utilisateur n’aura plus besoin, par exemple, les fichiers qui sont temporairement mis en cache pour des raisons de performances. La suppression convient également aux fichiers qui sont facilement restaurés, tels que les fichiers graphiques qui peuvent être rechargés à partir d’un CD d’installation. Les fichiers dont l’utilisateur peut avoir besoin ultérieurement ou qui seraient difficiles à reconstruire sont de meilleurs candidats pour la compression ou la sauvegarde.

S’attendre à ce qu’un utilisateur propre manuellement le système de fichiers n’est pas une bonne solution. L’utilisateur ne sait peut-être pas où se trouvent la plupart des fichiers ou comment reconnaître ceux qui peuvent être supprimés en toute sécurité. En outre, l’utilisateur risque de supprimer des fichiers essentiels.

Les facettes suivantes de l’utilitaire De nettoyage de disque sont abordées dans cette rubrique.

Utilitaire de nettoyage de disque Windows

À partir de Windows 98, le système d’exploitation Windows inclut le nettoyage de disque, un utilitaire qui permet à l’utilisateur de gérer beaucoup plus facilement l’espace disque dur disponible. L’utilitaire Nettoyage de disque est conçu pour libérer autant d’espace disque que possible et réduire le risque que l’utilisateur supprime accidentellement des fichiers essentiels.

Le nettoyage de disque peut être lancé de trois manières.

  • L’utilisateur peut lancer le nettoyage du disque en cliquant sur Démarrer ; pointant vers Tous les programmes, accessoires et outils système ; puis cliquez sur Nettoyage de disque.
  • Le système avertit l’utilisateur avec une boîte de message que l’espace disque inutilisé a atteint le mode critique. Le seuil du mode critique pour un lecteur de plus de 2,25 gigaoctets (Go) est de 200 mégaoctets (Mo). Les avertissements suivants sont donnés à 80, 50 et 1 Mo. L’utilisateur a la possibilité de libérer manuellement de l’espace disque ou de démarrer l’utilitaire Nettoyage de disque.
  • L’utilisateur peut faire exécuter l’Assistant Tâche planifiée Windows (connu sous le nom d’Assistant Maintenance sur les anciens systèmes) automatiquement l’utilitaire Nettoyage de disque aux heures planifiées.

Le défi de base inhérent au nettoyage de disque consiste à libérer autant d’espace disque que possible sans supprimer les fichiers essentiels. Étant donné qu’il n’existe aucun moyen standard de marquer les fichiers pour le nettoyage, aucune application ne peut détecter et propre de manière fiable tous les fichiers non essentiels. L’utilitaire De nettoyage de disque résout ce problème en fractionnant l’opération de nettoyage entre un seul gestionnaire de nettoyage de disque et une collection de gestionnaires de nettoyage de disque.

Lorsque l’utilitaire Nettoyage de disque est exécuté, l’utilisateur voit la boîte de dialogue suivante. (S’il existe plusieurs disques ou partitions de disque sur l’ordinateur, l’utilisateur est d’abord invité à choisir un lecteur avant d’afficher cette boîte de dialogue.)

Capture d’écran de la boîte de dialogue propre haut

Le gestionnaire de nettoyage de disque fait partie du système d’exploitation. Il affiche la boîte de dialogue illustrée dans l’illustration précédente, gère l’entrée utilisateur et gère l’opération de nettoyage. La sélection et le nettoyage réels des fichiers inutiles sont effectués par les gestionnaires de nettoyage de disque individuels indiqués dans la zone de liste du gestionnaire de nettoyage de disque. L’utilisateur a la possibilité d’activer ou de désactiver des gestionnaires individuels en sélectionnant ou en désactivant leur zone de case activée dans l’interface utilisateur du gestionnaire de nettoyage de disque.

Chaque gestionnaire est responsable d’un ensemble bien défini de fichiers. Par exemple, le gestionnaire sélectionné dans l’illustration est responsable du nettoyage des fichiers programme téléchargés. Le gestionnaire sélectionné dans l’illustration fournit également un bouton Afficher les fichiers . En cliquant sur le bouton, l’utilisateur peut demander au gestionnaire d’afficher une interface utilisateur généralement une fenêtre Windows Explorer qui permet à l’utilisateur de spécifier les fichiers ou classes de fichiers à propre.

Bien que Windows soit fourni avec un certain nombre de gestionnaires de nettoyage de disque, ils ne sont pas conçus pour gérer les fichiers produits par d’autres applications. Au lieu de cela, le gestionnaire de nettoyage de disque est conçu pour être flexible et extensible en permettant à n’importe quel développeur d’implémenter et d’inscrire son propre gestionnaire de nettoyage de disque. Tout développeur peut étendre les services de nettoyage de disque disponibles en implémentant et en inscrivant un gestionnaire de nettoyage de disque.

Toutes les applications qui produisent des fichiers temporaires peuvent et doivent implémenter et inscrire un gestionnaire de nettoyage de disque. Cela offre aux utilisateurs un moyen pratique et fiable de gérer les fichiers temporaires de l’application. Lorsque vous implémentez le gestionnaire, vous pouvez décider quels fichiers sont affectés et déterminer la façon dont le nettoyage réel se produit.

Principes de base de l’implémentation

Les gestionnaires de nettoyage sont des objets COM (Component Object Model) du serveur in-process. Windows fournit un objet de gestionnaire existant appelé DataDrivenCleaner pour votre utilisation. Vous pouvez également choisir d’implémenter un gestionnaire vous-même pour plus de flexibilité. Ces objets vous permettent ensuite de spécifier comment sélectionner des fichiers, libérer de l’espace disque et, dans le cas d’un gestionnaire implémenté, afficher l’interface utilisateur facultative pour un contrôle plus granulaire. Cette section traite de la question de l’implémentation de votre propre gestionnaire. Pour plus d’informations sur l’utilisation de l’objet DataDrivenCleaner, consultez Utilisation de l’objet DataDrivenCleaner.

Un gestionnaire de nettoyage de disque doit effectuer ces cinq tâches de base.

  • Initialisez l’objet gestionnaire.
  • Analysez le disque pour déterminer combien d’espace disque peut être libéré.
  • Affichez l’interface utilisateur pour obtenir des commentaires des utilisateurs sur les fichiers à propre. (facultatif)
  • Effectuez le nettoyage.
  • Arrêter.

Pour permettre au gestionnaire de nettoyage de disque de gérer ces tâches, un gestionnaire doit exporter IEmptyVolumeCache pour Windows 98 ou IEmptyVolumeCache2 pour Windows Millennium Edition (Windows Me), Windows 2000 et Windows XP. Étant donné que IEmptyVolumeCache2 hérite d’IEmptyVolumeCache, en ajoutant uniquement la méthode supplémentaire InitializeEx, un travail supplémentaire relativement faible est nécessaire pour implémenter les deux. À moins que votre gestionnaire ne soit destiné qu’à un seul de ces systèmes d’exploitation, il doit exporter les deux interfaces.

Pour exporter ces interfaces, vous devez implémenter ces méthodes correspondant aux cinq tâches de base.

Initialize/InitializeEx

Les deux méthodes d’initialisation, qui sont assez similaires, sont appelées lors de l’exécution de l’utilitaire de nettoyage de disque. Le gestionnaire de nettoyage de disque Windows 98 appelle la méthode IEmptyVolumeCache::Initialize d’un gestionnaire. Windows Millennium Edition (Windows Me), Windows 2000 ou le gestionnaire de nettoyage de disque Windows XP, cependant, essaie d’abord d’appeler IEmptyVolumeCache2::InitializeEx et utilise uniquement IEmptyVolumeCache::Initialize si IEmptyVolumeCache2 n’est pas exposé par le gestionnaire. Le gestionnaire de nettoyage de disque transmet des informations à la méthode, telles que la clé de Registre du gestionnaire et le volume de disque à nettoyer.

Les deux méthodes peuvent retourner différentes chaînes d’affichage et définir un ou plusieurs indicateurs. La principale différence entre les deux méthodes est la façon dont le texte affiché dans le gestionnaire de nettoyage de disque est géré. Les trois chaînes suivantes sont affectées.

Chaîne Objectif Initialize InitializeEx
Nom d’affichage Nom du gestionnaire affiché dans la zone de liste du gestionnaire de nettoyage de disque. Si ppwszDisplayName a la valeur NULL, la valeur par défaut est récupérée à partir du Registre. Une chaîne correctement localisée doit être spécifiée dans ppwszDisplayName , aucune valeur de Registre n’est utilisée.
Description Texte descriptif affiché sous la zone de liste lorsque le nom du gestionnaire est sélectionné. Si ppwszDescription a la valeur NULL, la valeur par défaut est récupérée à partir du Registre. Une chaîne correctement localisée doit être spécifiée dans ppwszDescription , aucune valeur de Registre n’est utilisée.
Texte du bouton Texte du bouton facultatif qui permet aux utilisateurs d’afficher l’interface utilisateur du gestionnaire. Aucun paramètre disponible. Doit être spécifié dans le Registre. Une chaîne correctement localisée doit être spécifiée dans ppwszBtnText , aucune valeur de Registre n’est utilisée.

Le paramètre pdwFlags trouvé dans les deux méthodes d’initialisation reconnaît le même ensemble d’indicateurs. Deux de ces indicateurs sont passés à la méthode par le gestionnaire de nettoyage de disque.

  • EVCF_SETTINGSMODE

    Si le gestionnaire de nettoyage de disque est exécuté selon une planification, il définit l’indicateur EVCF_SETTINGSMODE . Si cet indicateur est défini, le gestionnaire de nettoyage de disque n’appelle pas les méthodes GetSpaceUsed, Purge ou ShowProperties . La méthode Initialize ou InitializeEx du gestionnaire doit gérer toutes les tâches normalement effectuées par GetSpaceUsed et Purge. Étant donné qu’il n’y a aucune possibilité de commentaires des utilisateurs, seuls les fichiers extrêmement sûrs à propre doivent être touchés. Vous devez ignorer le paramètre pcwszVolume de la méthode d’initialisation et propre fichiers inutiles, quel que soit le lecteur sur lequel ils se trouvent.

  • EVCF_OUTOFDISKSPACE

    Si l’indicateur EVCF_OUTOFDISKSPACE est défini, le lecteur de disque de l’utilisateur manque d’espace critique. Le gestionnaire doit être agressif quant à la suppression de fichiers, même si cela entraîne une perte de performances. Toutefois, le gestionnaire ne doit évidemment pas supprimer les fichiers qui entraîneraient l’échec d’une application ou la perte de données par l’utilisateur.

Les indicateurs restants sont définis par le gestionnaire de nettoyage de disque et retournés au gestionnaire de nettoyage de disque. Pour plus d’informations, consultez les pages de référence de méthode pour IEmptyVolumeCache::Initialize et IEmptyVolumeCache2::InitializeEx.

  • EVCF_DONTSHOWIFZERO

    Affichez le gestionnaire dans la zone de liste du gestionnaire de nettoyage de disque uniquement si la valeur retournée par GetSpaceUsed indique que le gestionnaire peut libérer de l’espace disque.

  • EVCF_ENABLEBYDEFAULT

    Spécifie que le gestionnaire est activé par défaut. Il s’exécute chaque fois qu’un nettoyage de disque a lieu, sauf si l’utilisateur le désactive en désactivant sa zone de case activée dans la liste des gestionnaires de nettoyage de disque.

  • EVCF_ENABLEBYDEFAULT_AUTO

    Spécifie que le gestionnaire est automatiquement activé pour s’exécuter pendant les nettoyages planifiés.

  • EVCF_HASSETTINGS

    Définissez cet indicateur si votre gestionnaire a une interface utilisateur à afficher. En réponse, le gestionnaire de nettoyage de disque affiche un bouton lorsque ce gestionnaire est sélectionné dans la zone de liste. Si vous cliquez sur ce bouton, le gestionnaire de nettoyage de disque appelle ShowProperties.

  • EVCF_REMOVEFROMLIST

    Supprimez le nom du gestionnaire de la liste des gestionnaires disponibles une fois que le gestionnaire a été exécuté une fois. Les informations de Registre du gestionnaire sont également supprimées.

GetSpaceUsed

Le gestionnaire de nettoyage de disque appelle cette méthode pour déterminer la quantité d’espace qu’un gestionnaire de nettoyage de disque peut potentiellement libérer. Le gestionnaire de nettoyage de disque affiche ensuite cette valeur à droite du nom du gestionnaire dans la zone de liste. Cette opération est effectuée sur tous les gestionnaires inscrits auprès du gestionnaire de nettoyage de disque lors du lancement du gestionnaire et avant l’affichage de l’interface utilisateur main du gestionnaire. Lorsque GetSpaceUsed est appelé, le gestionnaire doit analyser les fichiers dont il est responsable, déterminer quels sont les candidats au nettoyage et retourner la quantité d’espace disque qu’il peut libérer.

Étant donné que l’analyse peut être un processus long, le gestionnaire de nettoyage de disque utilise le paramètre picb de cette méthode pour passer un pointeur vers une interface IEmptyVolumeCacheCallBack . Le gestionnaire utilise régulièrement l’interface pendant l’analyse pour appeler IEmptyVolumeCacheCallBack::ScanProgress, ce qui sert à deux fins.

  • Permet au gestionnaire de nettoyage de disque de mettre à jour une barre de progression, en informant l’utilisateur de la progression de l’analyse.
  • Avertit le gestionnaire d’arrêter l’analyse en cas de clic sur le bouton Annuler de la fenêtre de progression. Cet événement de bouton n’est pas communiqué directement au gestionnaire ; au lieu de cela, le gestionnaire de nettoyage de disque retourne E_ABORT la prochaine fois que GetSpaceUsed appelle IEmptyVolumeCacheCallBack::ScanProgress.

Showproperties

Avant de commencer le nettoyage, le gestionnaire peut afficher une interface utilisateur généralement sous la forme d’une fenêtre Windows Explorer qui permet à l’utilisateur de voir une liste de fichiers ou de classes de fichiers sélectionnés pour le nettoyage par le gestionnaire. Si le gestionnaire définit l’indicateur de EVCF_HASSETTINGS lorsque Initialize ou InitializeEx est appelé, l’utilisateur peut demander l’interface utilisateur en cliquant sur le bouton affiché à cet effet dans le gestionnaire de nettoyage de disque. Le texte du bouton varie d’un gestionnaire à l’autre, mais « Afficher les fichiers », « Afficher les pages » et « Options » sont des étiquettes courantes.

Lorsque vous cliquez sur le bouton, le gestionnaire de nettoyage de disque appelle ShowProperties pour inviter le gestionnaire à afficher l’interface utilisateur. L’interface utilisateur doit être créée en tant qu’enfant de la fenêtre dont le handle est passé dans le paramètre hwnd de la méthode ShowProperties.

Purge

Le gestionnaire de nettoyage de disque appelle la méthode Purge du gestionnaire pour définir le nettoyage en mouvement. Le paramètre picb de la méthode est un pointeur vers l’interface IEmptyVolumeCacheCallBack du gestionnaire de nettoyage de disque. Comme avec la méthode GetSpaceUsed , le gestionnaire doit utiliser régulièrement l’interface de rappel pour signaler sa progression et interroger le gestionnaire de nettoyage de disque si l’utilisateur a cliqué sur Annuler. Toutefois, notez que la méthode Purge doit appeler IEmptyVolumeCacheCallBack::P urgeProgress, et non ScanProgress.

Désactivation

La méthode Deactivate est appelée lorsque le gestionnaire de nettoyage de disque se prépare à s’arrêter. Le gestionnaire doit effectuer toutes les tâches de nettoyage nécessaires et retourner. Si vous ne souhaitez pas que le gestionnaire soit réexécuté, définissez l’indicateur EVCF_REMOVEFROMLIST dans le paramètre pdwFlags de la méthode d’initialisation. Si cet indicateur est défini, le gestionnaire de nettoyage de disque supprime le gestionnaire de sa liste et supprime les entrées de Registre du gestionnaire. Vous devez rajouter les entrées de Registre pour réexécuter le gestionnaire. Cet indicateur est généralement utilisé pour les gestionnaires qui ne sont exécutés qu’une seule fois.

Inscription d’un gestionnaire de nettoyage de disque

Pour ajouter un gestionnaire à la liste du gestionnaire de nettoyage de disque, certaines clés et valeurs doivent être ajoutées au Registre Windows.

Inscription du CLSID d’un gestionnaire

Comme pour tous les objets COM, le GUID et la DLL de l’objet gestionnaire doivent être inscrits sous la clé CLSID dans HKEY_CLASSES_ROOT. Vous pouvez également inscrire une icône qui s’affiche en regard du nom du gestionnaire dans la zone de liste du gestionnaire de nettoyage de disque, mais cela est facultatif. L’exemple suivant montre les clés, les valeurs et les données impliquées.

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

Inscription d’un gestionnaire auprès du Gestionnaire de nettoyage de disque : Général

Pour terminer l’inscription, un gestionnaire doit ajouter une clé contenant ses spécificités, comme indiqué ici. Le reste de cette section traite du contenu de cette clé.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  VolumeCaches
                     Handler's Key

En général, le nom de la clé contenant les détails d’un gestionnaire est nommé pour le type de fichier qu’il gère, par exemple fichiers de programme téléchargés, mais ce n’est pas une exigence. Le tableau suivant détaille les valeurs possibles trouvées sous cette clé.

Notes

Seule la valeur Par défaut spécifiant l’identificateur de classe (CLSID) du gestionnaire est requise, toutes les autres valeurs sont facultatives.

Valeur Type Signification
Default REG_SZ CLSID du gestionnaire comme inscrit sous HKEY_CLASSES_ROOT\CLSID.
AdvancedButtonText REG_SZ Texte du bouton facultatif sur lequel les utilisateurs peuvent cliquer pour afficher l’interface utilisateur du gestionnaire. Le caractère & peut être placé avant un caractère pour affecter un raccourci clavier pour le bouton. La valeur AdvancedButtonText est ignorée par les gestionnaires qui exposent IEmptyVolumeCache2::InitializeEx.
CleanupString REG_SZ Ligne de commande spécifiant un fichier exécutable et des paramètres de ligne de commande facultatifs. Cette ligne de commande est exécutée à la fin du nettoyage du disque.
CSIDL REG_DWORD Identificateur indépendant du système pour un dossier spécial à inclure dans la recherche de fichiers. Cette valeur doit être entrée en tant que valeur numérique pour instance, 0x0000001c plutôt que CSIDL_LOCAL_APPDATA. Pour obtenir la liste des valeurs possibles, consultez CSIDL. Une seule valeur peut être utilisée.
Si la valeur Folder est spécifiée, l’emplacement indiqué par la valeur CSIDL est ajouté à ces informations pour composer un chemin de recherche. Pour instance, envisagez le scénario suivant.
  • La valeur CSIDL est spécifiée en tant que 0x0000000d (CSIDL_MYMUSIC)
  • Votre dossier Ma musique se trouve dans C:\Documents and Settings\username\My Music
  • La valeur Folder contient « Jazz\Singers »
Le résultat de ce scénario est que le gestionnaire de nettoyage de disque recherche le dossier C:\Documents and Settings\username\My Music\Jazz\Singers. Notez que la barre oblique précédant la valeur Folder est ajoutée si elle n’est pas présente.
Description REG_SZ Texte descriptif affiché sous la zone de liste du gestionnaire de nettoyage de disque lorsque le nom du gestionnaire est sélectionné. Ici, vous pouvez expliquer ce que fait le gestionnaire, les fichiers qu’il concerne lui-même et toute autre information pouvant être élucidée pour l’utilisateur. Si IEmptyVolumeCache2::InitializeEx n’est pas exposé par le gestionnaire, ce texte peut être remplacé par la méthode IEmptyVolumeCache::Initialize du gestionnaire en spécifiant une autre chaîne dans le paramètre ppwszDescription lorsque la méthode est appelée.
Affichage REG_SZ Nom du gestionnaire à afficher dans la zone de liste du gestionnaire de nettoyage de disque. Si IEmptyVolumeCache2::InitializeEx n’est pas exposé par le gestionnaire, ce texte peut être remplacé par la méthode IEmptyVolumeCache::Initialize du gestionnaire en spécifiant une autre chaîne dans le paramètre ppwszDisplayName lorsque la méthode est appelée.
Filelist REG_SZ ou REG_MULTI_SZ Liste des fichiers recherchés et nettoyés par ce gestionnaire. Vous pouvez spécifier des caractères génériques à l’aide de ? ou * caractères. Si la valeur est de type REG_SZ, plusieurs extensions sont séparées à l’aide de | ou : caractères, sans espace de part et d’autre.
Si l’indicateur DDEVCF_REMOVEDIRS est défini dans la valeur Indicateurs, ces valeurs peuvent spécifier des noms de répertoires ainsi que des fichiers.
Indicateurs REG_DWORD ou REG_BINARY Indicateurs contrôlant les éléments de la procédure de recherche et de nettoyage. Une ou plusieurs des valeurs suivantes.
  • DDEVCF_DOSUBDIRS (0x00000001). Recherchez et supprimez de manière récursive.
  • DDEVCF_REMOVEAFTERCLEAN (0x00000002). Une fois le gestionnaire exécuté une seule fois, supprimez-le du Registre.
  • DDEVCF_REMOVEREADONLY (0x00000004). Supprimez les fichiers qui répondent aux critères de recherche, même s’ils sont en lecture seule.
  • DDEVCF_REMOVESYSTEM (0x00000008). Supprimez les fichiers qui répondent aux critères de recherche, même s’il s’agit de fichiers système.
  • DDEVCF_REMOVEHIDDEN (0x00000010). Supprimez les fichiers qui répondent aux critères de recherche, même s’il s’agit de fichiers masqués.
  • DDEVCF_DONTSHOWIFZERO (0x00000020). N’affichez pas ce gestionnaire dans le gestionnaire de nettoyage de disque si aucun fichier ne correspond à ses critères de recherche.
  • DDEVCF_REMOVEDIRS (0x00000040). Faites correspondre la valeur FileList aux répertoires et supprimez les correspondances et tous leurs sous-répertoires.
  • DDEVCF_RUNIFOUTOFDISKSPACE (0x00000080). Exécutez ce gestionnaire uniquement si l’espace disque disponible est passé en dessous de la valeur critique, déterminée par la définition de l’indicateur EVCF_OUTOFDISKSPACE par le biais de IEmptyVolumeCache::Initialize ou IEmptyVolumeCache2::InitializeEx.
  • DDEVCF_REMOVEPARENTDIR (0x00000100). Supprimez le répertoire parent des fichiers spécifiés une fois le nettoyeur exécuté.
  • DDEVCF_PRIVATE_LASTACCESS (0x10000000). Utilisez la valeur LastAccess, si elle est fournie, pour déterminer quels fichiers doivent être nettoyés. Cet indicateur est ignoré lors de l’utilisation du DataDrivenCleaner , toute valeur LastAccess fournie est toujours utilisée.
Dossier REG_SZ, REG_MULTI_SZ ou REG_EXPAND_SZ Un ou plusieurs dossiers spécifiques pour rechercher des éléments correspondant aux entrées dans la valeur FileList. Vous pouvez spécifier des caractères génériques à l’aide de ? ou * caractères. Si la valeur est de type REG_SZ, plusieurs noms de dossiers sont séparés à l’aide de | caractère, sans espaces de part et d’autre de celui-ci.
Si une valeur CSIDL est présente, un seul dossier peut être spécifié dans cette valeur. L’emplacement indiqué par la valeur CSIDL est ajouté à ce chemin d’accès de dossier pour composer un chemin de recherche. Pour obtenir un exemple, consultez la description de la valeur CSIDL.
Si cette valeur est absente sur Windows Vista Service Pack 1 (SP1) et versions ultérieures, le gestionnaire de nettoyage est ignoré et retourne S_FALSE lors de l’initialisation.
Si cette valeur est absente dans la version d’origine de Windows Vista et les versions antérieures, le dossier racine du volume actuel est utilisé. L’indicateur DDEVCF_DOSUBDIRS est nécessaire dans ce cas pour effectuer une recherche sur l’ensemble du lecteur. Sans cela, seul le dossier racine lui-même est recherché.
Un ou plusieurs lecteurs doivent être spécifiés. Cela peut être fourni par le biais de la valeur CSIDL ou d’une chaîne REG_EXPAND_SZ. Toutefois, à l’exception de ces options, le lecteur à rechercher doit être spécifié dans le nom du dossier. Utilisez ?: pour rechercher le dossier sur le lecteur actuel.
IconPath REG_SZ ou REG_EXPAND_SZ Chemin d’accès à la ressource à partir de laquelle obtenir une icône à utiliser en association avec le gestionnaire.
LastAccess REG_DWORD ou REG_BINARY Nombre de jours qui doivent s’écouler depuis le dernier accès à un fichier ou la création d’un répertoire pour que ce fichier ou répertoire soit pris en compte pour le nettoyage.
Priorité REG_DWORD ou REG_BINARY Détermine l’ordre dans lequel le gestionnaire est exécuté par rapport à d’autres gestionnaires. Plus le nombre est élevé, plus le plus tôt dans le processus que le gestionnaire exécute. Il n’existe aucune plage définie, un nombre quelconque est acceptable.
PropertyBag REG_SZ CLSID d’une ressource utilisée pour fournir du texte localisé pour le nom d’affichage, la description et le texte du bouton. Cette ressource est utile dans le cas où un gestionnaire n’implémente pas IEmptyVolumeCache et où le gestionnaire est exécuté sous Microsoft Windows NT ou Windows XP.
Le gestionnaire de nettoyage de disque vérifie d’abord si la routine d’initialisation du gestionnaire a retourné ces chaînes, comme ce serait le cas lorsque IEmptyVolumeCache2 est implémenté. À défaut, le responsable passe ensuite à un conteneur de propriétés nommé dans cette valeur. Si aucun n’a été fourni, il récupère le texte du Registre.
StateFlags REG_DWORD En exécutant le fichier exécutable du gestionnaire de nettoyage de disque Cleanmgr.exe à partir d’une ligne de commande, vous pouvez déclarer des profils de nettoyage. Ces profils sont composés d’un sous-ensemble des gestionnaires disponibles et reçoivent une étiquette numérique unique. Cela vous permet d’automatiser l’exécution de différents ensembles de gestionnaires à différents moments.
La ligne de commande « cleanmgr.exe /sageset:nnnn », où nnnn est une étiquette numérique unique, affiche une interface utilisateur vous permettant de choisir les gestionnaires à inclure dans ce profil. En plus de définir le profil, le paramètre sageset écrit également une valeur nommée StateFlagsnnnn, où nnnn est l’étiquette que vous avez utilisée dans le paramètre, dans toutes les sous-clés sous VolumeCaches. Il existe deux valeurs de données possibles pour ces entrées.
  • 0 : n’exécutez pas ce gestionnaire lorsque ce profil est exécuté.
  • 2 : Incluez ce gestionnaire lors de l’exécution de ce profil.

Par exemple, supposons que la ligne de commande « cleanmgr.exe /sageset:1234 » soit exécutée. Dans l’interface utilisateur qui est présentée, l’utilisateur choisit Fichiers programme téléchargés, mais ne choisit pas Fichiers Internet temporaires. Les valeurs suivantes sont ensuite écrites dans le Registre.
HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  VolumeCaches
                     Downloaded Program Files
                        StateFlags1234 = 0x00000002
                     Internet Cache Files
                        StateFlags1234 = 0x00000000

La ligne de commande « cleanmgr.exe /sagerun:nnnn », où la valeur de nnnn correspond à l’étiquette déclarée avec le paramètre sageset, exécute tous les gestionnaires sélectionnés dans ce profil.
Une valeur StateFlags générique est écrite dans le Registre lorsque le nettoyage de disque est exécuté normalement. Cette valeur stocke simplement l’état (coché ou décoché) du gestionnaire la dernière fois qu’il a été présenté en tant qu’option à l’utilisateur. Il existe deux valeurs de données possibles pour ces entrées.
  • 0 : Le gestionnaire n’a pas été sélectionné.
  • 1 : Le gestionnaire a été sélectionné.

Inscription d’un gestionnaire auprès du Gestionnaire de nettoyage de disque : Windows 2000 ou systèmes ultérieurs

La spécification du texte d’affichage dans le Registre peut compliquer la localisation du logiciel. Pour cette raison, Windows 2000 et Windows XP prennent en charge l’interface IEmptyVolumeCache2 avec sa méthode d’initialisation par défaut InitializeEx. Sous Windows 2000 ou version ultérieure, une tentative est toujours effectuée pour appeler IEmptyVolumeCache2::InitializeEx avant IEmptyVolumeCache::Initialize. Le système utilise Initialize uniquement pour initialiser un gestionnaire si IEmptyVolumeCache2 n’est pas exposé.

En ce qui concerne le Registre, la seule différence sous Windows 2000 ou version ultérieure est que vous pouvez omettre les valeurs AdvancedButtonText, Display et Description lorsque IEmptyVolumeCache2::InitializeEx est exposé par le gestionnaire. Ces valeurs, qui contiennent du texte correctement localisé, sont fournies au gestionnaire de nettoyage de disque lorsqu’il appelle InitializeEx.

Utilisation de l’objet DataDrivenCleaner

Un gestionnaire de nettoyage de disque de base, appelé DataDrivenCleaner, est fourni par le système d’exploitation. Pour utiliser cet objet comme gestionnaire plutôt que d’implémenter le vôtre, utilisez le CLSID {C0E13E61-0CC6-11d1-BBB6-0060978B2AE6} comme valeur par défaut pour la sous-clé du gestionnaire sous VolumeCaches , comme décrit dans Inscription d’un gestionnaire auprès du Gestionnaire de nettoyage de disque : Général.

DataDrivenCleaner n’expose pas IEmptyVolumeCache2. Les valeurs Display et Description sont donc fournies via le Registre. Lorsque vous déclarez ces chaînes, sachez que cela peut entraîner des problèmes de localisation. Le texte localisé peut être fourni via la valeur PropertyBag. La valeur AdvancedButtonText est ignorée, car aucune interface utilisateur, et donc aucun bouton pour l’afficher, n’est disponible pour ce gestionnaire.

Exemple d’inscription d’un gestionnaire de nettoyage de disque

L’exemple suivant montre un exemple d’inscription pour un gestionnaire de nettoyage de disque implémenté par The Phone Company. Ce gestionnaire implémente À la fois IEmptyVolumeCache et IEmptyVolumeCache2, et fournit ainsi des valeurs AdvancedButtonText, Description et Display dans le cas où il est utilisé sur un ordinateur exécutant Windows 98. Le gestionnaire combine les valeurs CSIDL et Folder pour rechercher des fichiers dans le répertoire C:\Program Files\The Phone Company\Temp, et l’indicateur DDEVCF_DOSUBDIRS est défini de sorte que ses sous-répertoires soient également recherchés. Seuls les fichiers avec les extensions .tmp et .tpc sont pris en compte pour le nettoyage, et l’indicateur DDEVCF_PRIVATE_LASTACCESS est défini de sorte que seuls ceux qui n’ont pas été consultés depuis 14 jours ou plus sont pris en compte. L’indicateur DDEVCF_DONTSHOWIFZERO est également défini pour que le gestionnaire n’apparaisse pas dans la liste, sauf s’il a trouvé des candidats de nettoyage.

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}