Delen via


Een handler voor schijfopruiming maken

Een axiom bewezen tijd en weer in de wereld van computers is dat, ongeacht de grootte van de opslagcapaciteit van uw computer, u deze uiteindelijk opvult. Hoewel de gemiddelde grootte van de harde schijf van een computer in de loop van de tijd aanzienlijk is toegenomen, zijn toepassingen ook dienovereenkomstig gegroeid, waardoor gebruikers op zoek zijn naar manieren om meer vrije schijfruimte te maken. De beschikbare ruimte wordt ook verminderd door de vele tijdelijke bestanden die toepassingen aanmaken voor back-up- of prestatieredenen. Wanneer schijfruimte laag wordt, wordt het nodig om de hoeveelheid ruimte te verminderen die door toepassingen wordt gebruikt. Schijfruimte kan worden vrijgemaakt met behulp van verschillende middelen, waaronder:

  • Bestanden verwijderen.
  • Bestanden comprimeren.
  • Bestanden verplaatsen naar een back-upmedium.
  • Bestanden overdragen naar een externe server.

Bestanden die goede kandidaten zijn voor het opschonen zijn onder andere:

  • Bestanden die de gebruiker nooit meer nodig heeft.
  • Tijdelijke bestanden die alleen bestaan voor prestatieverbetering.
  • Bestanden die, indien nodig, kunnen worden hersteld vanaf een installatie-cd.
  • Gegevensbestanden die mogelijk zijn vervangen door nieuwere versies, zoals oude back-upbestanden.
  • Oudere bestanden die lange tijd niet zijn gebruikt.

Verwijderen is met name geschikt voor bestanden die de gebruiker nooit meer nodig heeft, bijvoorbeeld bestanden die tijdelijk in de cache zijn opgeslagen om prestatieredenen. Verwijderen is ook geschikt voor bestanden die eenvoudig kunnen worden hersteld, zoals grafische bestanden die opnieuw kunnen worden geladen vanaf een installatie-cd. Bestanden die de gebruiker mogelijk later nodig heeft of die moeilijk te reconstrueren zijn betere kandidaten voor compressie of back-up.

Het is geen goede oplossing om van een gebruiker te verwachten dat ze het bestandssysteem handmatig opschonen. De gebruiker weet mogelijk niet waar veel van de bestanden zich bevinden of hoe ze kunnen herkennen welke veilig kunnen worden verwijderd. Bovendien bestaat het risico dat de gebruiker essentiële bestanden kan verwijderen.

In dit onderwerp worden de volgende facetten van het hulpprogramma Schijfopruiming besproken.

Het windows-hulpprogramma voor schijfopruiming

Vanaf Windows 98 bevat het Windows-besturingssysteem Schijfopruiming, een hulpprogramma waarmee de gebruiker de beschikbare schijfruimte gemakkelijker kan beheren. Het hulpprogramma Schijfopruiming is ontworpen om zoveel mogelijk schijfruimte vrij te maken en het risico te verkleinen dat de gebruiker essentiële bestanden per ongeluk verwijdert.

Schijfopruiming kan op drie manieren worden gestart.

  • De gebruiker kan Schijfopruiming initiëren door te klikken op Start; Alle Programma's, Accessoiresen Systeemhulpprogramma's; en vervolgens op Schijfopruiming.
  • Het systeem meldt de gebruiker met een berichtvak dat ongebruikte schijfruimte de kritieke modus heeft bereikt. De drempelwaarde voor kritieke modus voor een station dat groter is dan 2,25 gigabyte (GB) is 200 megabytes (MB). Volgende waarschuwingen worden gegeven op 80, 50 en 1 MB. De gebruiker krijgt de mogelijkheid om schijfruimte handmatig vrij te maken of het hulpprogramma Schijfopruiming te starten.
  • De gebruiker kan beschikken over de wizard Geplande Windows-taken (ook wel de wizard Onderhoud op oudere systemen genoemd) om het hulpprogramma Schijfopruiming automatisch op geplande tijden uit te voeren.

De basisvraag die inherent is aan schijfopruiming is om zoveel mogelijk schijfruimte vrij te maken zonder essentiële bestanden te verwijderen. Omdat er geen standaardmethode is om bestanden te markeren voor opschonen, kan geen enkele toepassing alle onbelangige bestanden betrouwbaar detecteren en opschonen. Het hulpprogramma Schijfopruiming lost dit probleem op door de opschoonbewerking te splitsen tussen één schijfopruimingsbeheer en een verzameling handlers voor schijfopruiming.

Wanneer het hulpprogramma Schijfopruiming wordt uitgevoerd, ziet de gebruiker het volgende dialoogvenster. (Als er meer dan één schijf of schijfpartitie op de computer bestaat, wordt de gebruiker eerst gevraagd een station te kiezen voordat dit dialoogvenster wordt weergegeven.)

schermafbeelding van het dialoogvenster opschonen

Het schijfopruimingsbeheer maakt deel uit van het besturingssysteem. Het dialoogvenster wordt weergegeven in de vorige afbeelding, verwerkt gebruikersinvoer en beheert de opschoonbewerking. De daadwerkelijke selectie en het opschonen van overbodige bestanden wordt uitgevoerd door de afzonderlijke schijfopruimingshandlers die worden weergegeven in de keuzelijst van schijfopruimingsbeheer. De gebruiker heeft de mogelijkheid om afzonderlijke handlers in of uit te schakelen door het selectievakje in of uit te schakelen in de gebruikersinterface van de schijfopruimingsmanager.

Elke handler is verantwoordelijk voor een goed gedefinieerde set bestanden. De geselecteerde handler in de afbeelding is bijvoorbeeld verantwoordelijk voor het opschonen van gedownloade programmabestanden. De handler die in de afbeelding is geselecteerd, bevat ook een knop Bestanden weergeven. Door op de knop te klikken, kan de gebruiker aanvragen dat de handler een gebruikersinterface weergeeft, meestal een Windows Verkenner-venster waarmee de gebruiker kan opgeven welke bestanden of klassen bestanden moeten worden opgeschoond.

Hoewel Windows wordt geleverd met een aantal handlers voor schijfopruiming, zijn ze niet ontworpen voor het verwerken van bestanden die worden geproduceerd door andere toepassingen. In plaats daarvan is het schijfopruimingsbeheer ontworpen om flexibel en uitbreidbaar te zijn door elke ontwikkelaar in staat te stellen een eigen handler voor schijfopruiming te implementeren en te registreren. Elke ontwikkelaar kan de beschikbare services voor schijfopruiming uitbreiden door een schijfopruimingshandler te implementeren en te registreren.

Alle toepassingen die tijdelijke bestanden produceren, kunnen en moeten een handler voor schijfopruiming implementeren en registreren. Dit biedt gebruikers een handige en betrouwbare manier om de tijdelijke bestanden van de toepassing te beheren. Wanneer u de handler implementeert, kunt u bepalen welke bestanden worden beïnvloed en bepalen hoe de werkelijke opschoonactie plaatsvindt.

Basisbeginselen van implementatie

Opschoningshandlers zijn COM-objecten (In-Process Server Component Object Model). Windows biedt een bestaand handlerobject met de naam DataDrivenCleaner voor uw gebruik. U kunt er ook voor kiezen om zelf een handler te implementeren voor meer flexibiliteit. Met deze objecten kunt u vervolgens opgeven hoe u bestanden selecteert, schijfruimte vrijlaat en, in het geval van een geïmplementeerde handler, de optionele gebruikersinterface weergeven voor gedetailleerdere controle. In deze sectie wordt uitgelegd hoe u uw eigen handler implementeert. Zie Het DataDrivenCleaner-object gebruikenvoor meer informatie over het gebruik van het DataDrivenCleaner-object.

Een handler voor schijfopruiming moet deze vijf basistaken uitvoeren.

  • Initialiseer het handlerobject.
  • Scan de schijf om te bepalen hoeveel schijfruimte kan worden vrijgemaakt.
  • Geef de gebruikersinterface weer om feedback van gebruikers te krijgen over welke bestanden moeten worden opgeschoond. (Optioneel)
  • Doe het opschonen.
  • Uitschakelen.

Als u de beheerder van schijfopruiming toestaat deze taken te beheren, moet een handler ofwel IEmptyVolumeCache voor Windows 98, of IEmptyVolumeCache2 voor Windows Millennium Edition (Windows Me), Windows 2000 en Windows XP exporteren. Omdat IEmptyVolumeCache2 erft van IEmptyVolumeCache, en alleen de extra methode InitializeExtoevoegt, is er relatief weinig extra werk nodig om beide te implementeren. Tenzij uw handler is bedoeld voor slechts één van deze besturingssystemen, moeten beide interfaces worden geëxporteerd.

Als u deze interfaces wilt exporteren, moet u deze methoden implementeren die overeenkomen met de vijf basistaken.

Initialiseren/InitializeEx

De twee initialisatiemethoden, die vergelijkbaar zijn, worden aangeroepen wanneer het hulpprogramma Schijfopruiming wordt uitgevoerd. De windows 98-schijfopruimingsbeheer roept de IEmptyVolumeCache van een handler::Initialize methode. Windows Millennium Edition (Windows Me), Windows 2000 of Windows XP-schijfopschoonbeheer probeert echter eerst IEmptyVolumeCache2::InitializeEx- aan te roepen en gebruikt alleen IEmptyVolumeCache::Initialiseer als IEmptyVolumeCache2 niet wordt weergegeven door de handler. Het schijfopruimingsbeheer geeft informatie door aan de methode, zoals de registersleutel van de handler en het schijfvolume dat moet worden opgeschoond.

Een van beide methoden kan verschillende weergavetekenreeksen retourneren en een of meer vlaggen instellen. Het belangrijkste verschil tussen de twee methoden is hoe de tekst die wordt weergegeven in het schijfopruimingsbeheer wordt verwerkt. De volgende drie tekenreeksen worden beïnvloed.

Snaar Doel Initialiseren InitializeEx
Weergavenaam De naam van de handler die wordt weergegeven in de keuzelijst van schijfopruimingsbeheer. Als ppwszDisplayNameNULL-is, wordt de standaardwaarde opgehaald uit het register. Er moet een correct gelokaliseerde tekenreeks worden opgegeven in ppwszDisplayName er geen registerwaarden worden gebruikt.
Beschrijving Beschrijvende tekst die onder de keuzelijst wordt weergegeven wanneer de naam van de handler is geselecteerd. Als ppwszDescription is NULL-, wordt de standaardwaarde opgehaald uit het register. Er moet een correct gelokaliseerde tekenreeks worden opgegeven in ppwszDescription er geen registerwaarden worden gebruikt.
Knoptekst Tekst voor de optionele knop waarmee gebruikers de gebruikersinterface van de handler kunnen weergeven. Er is geen parameter beschikbaar. Moet worden opgegeven in het register. Er moet een correct gelokaliseerde tekenreeks worden opgegeven in ppwszBtnText er geen registerwaarden worden gebruikt.

De parameter pdwFlags in beide initialisatiemethoden herkent dezelfde set vlaggen. Twee van deze vlaggen worden doorgegeven aan de methode door het schijfopruimingsbeheer.

  • EVCF_SETTINGSMODE

    Als het schijfopruimingsbeheer volgens een schema wordt uitgevoerd, wordt de vlag EVCF_SETTINGSMODE ingesteld. Als deze vlag is ingesteld, roept de schijfopschoonbeheer de GetSpaceUsed, Opschonenof ShowProperties methoden niet aan. De handlermethode Initialize of InitializeEx moet alle taken verwerken die normaal gesproken worden uitgevoerd door GetSpaceUsed en Purge. Omdat er geen mogelijkheid is voor feedback van gebruikers, moeten alleen de bestanden die uiterst veilig zijn om op te schonen, worden aangeraakt. U moet de pcwszVolume van de initialisatiemethode negeren parameter en overbodige bestanden opschonen, ongeacht het station waarop ze zich bevinden.

  • EVCF_OUTOFDISKSPACE

    Als de vlag EVCF_OUTOFDISKSPACE is ingesteld, is het schijfstation van de gebruiker zeer weinig ruimte. De handler moet agressief zijn over het verwijderen van bestanden, zelfs als dit resulteert in een prestatieverlies. De handler mag echter geen bestanden verwijderen die ertoe leiden dat een toepassing uitvalt of dat de gebruiker gegevens verliest.

De resterende vlaggen worden ingesteld door de handler voor schijfopruiming en geretourneerd naar het schijfopruimingsbeheer. Zie de referentiepagina's voor methoden voor IEmptyVolumeCache::Initialize en IEmptyVolumeCache2::InitializeExvoor meer informatie.

  • EVCF_DONTSHOWIFZERO

    Geef de handler alleen weer in de keuzelijst van het schijfopschoonbeheer als de waarde die wordt geretourneerd door GetSpaceUsed aangeeft dat de handler schijfruimte vrij kan maken.

  • EVCF_ENABLEBYDEFAULT

    Hiermee geeft u op dat de handler standaard is ingeschakeld. Deze wordt uitgevoerd telkens wanneer er een schijfopruiming plaatsvindt, tenzij de gebruiker het uitschakelt door het selectievakje in de lijst met handlers van schijfopruimingsbeheer uit te schakelen.

  • EVCF_ENABLEBYDEFAULT_AUTO

    Hiermee geeft u op dat de handler automatisch wordt ingeschakeld voor uitvoering tijdens geplande opschoonacties.

  • EVCF_HASSETTINGS

    Stel deze vlag in als uw handler een gebruikersinterface heeft die moet worden weergegeven. Als reactie geeft het schijfopruimingsbeheer een knop weer wanneer die handler is geselecteerd in de keuzelijst. Als op die knop wordt geklikt, roept de schijfopruimingsmanager ShowPropertiesaan.

  • Verwijderen uit lijst

    Verwijder de naam van de handler uit de lijst met beschikbare handlers nadat de handler eenmaal is uitgevoerd. De registergegevens van de handler worden ook verwijderd.

GetSpaceUsed

De schijfopruimingsmanager roept deze methode aan om te bepalen hoeveel ruimte een schijfopruimingshandler mogelijk vrij kan maken. De Schijfopruimingsmanager geeft vervolgens deze waarde rechts van de naam van de handler weer in de keuzelijst. Deze bewerking wordt uitgevoerd op alle handlers die zijn geregistreerd bij schijfopruimingsbeheer wanneer de manager wordt gestart en voordat de hoofdgebruikersinterface van de manager wordt weergegeven. Wanneer GetSpaceUsed wordt aangeroepen, moet de verwerker de bestanden scannen waarvoor deze verantwoordelijk is, bepalen welke hiervan kandidaten zijn voor opschoning, en de hoeveelheid schijfruimte teruggeven die kan worden vrijgemaakt.

Omdat het scannen een langdurig proces kan zijn, gebruikt de schijfopruimingsmanager de parameter picb om een pointer door te geven aan een IEmptyVolumeCacheCallBack-interface. De handler gebruikt de interface periodiek tijdens de scan om IEmptyVolumeCacheCallBack::ScanProgressaan te roepen, die twee doeleinden dient.

  • Hiermee kan het schijfopruimingsbeheer een voortgangsbalk bijwerken, zodat de gebruiker wordt geïnformeerd hoe de scan vordert.
  • Hiermee wordt de handler op de hoogte gebracht om de scan te stoppen in het geval dat de knop Annuleren op het voortgangsvenster wordt geklikt. Deze knopgebeurtenis wordt niet rechtstreeks aan de handler gecommuniceerd; in plaats daarvan retourneert het schijfopruimprogramma E_ABORT de volgende keer dat GetSpaceUsed aanroept IEmptyVolumeCacheCallBack::ScanProgress.

EigenschappenWeergeven

Voordat u opschoont, kan de handler een gebruikersinterface weergeven in de vorm van een Windows Verkenner-venster waarmee de gebruiker een lijst met bestanden of klassen bestanden kan zien die zijn geselecteerd voor opschoning door de handler. Als de handler de vlag EVCF_HASSETTINGS instelt wanneer initialiseren of InitializeEx wordt aangeroepen, kan de gebruiker de gebruikersinterface aanvragen door te klikken op de knop die voor dat doel wordt weergegeven in het schijfopruimingsbeheer. De knoptekst varieert van handler tot handler, maar 'Bestanden weergeven', 'Pagina's weergeven' en 'Opties' zijn algemene labels.

Wanneer op de knop wordt geklikt, roept het schijfopruimingsbeheer ShowProperties aan om de handler te vragen om de gebruikersinterface weer te geven. De gebruikersinterface moet worden gemaakt als een onderliggend element van het venster waarvan de ingang wordt doorgegeven in de parameter ShowProperties methode hwnd.

Zuiveren

De schijfopruimingsbeheer roept de Purge-methode van de handler aan om de opruiming in gang te zetten. De parameter picb van de methode is een aanwijzer naar de interface IEmptyVolumeCacheCallBack van de schijfopruimingsbeheerder. Net als bij de methode GetSpaceUsed, moet de handler periodiek de callback-interface gebruiken om de voortgang te rapporteren en query's uit te voeren op het beheer van schijfopruiming of de gebruiker op Annulerenheeft geklikt. Houd er echter rekening mee dat de methode PurgeIEmptyVolumeCacheCallBack::PurgeProgressmoet aanroepen, niet ScanProgress.

Deactiveren

De methode Deactiveren wordt aangeroepen wanneer het schijfopruimingsbeheer zich voorbereidt om af te sluiten. De handler moet alle benodigde opschoontaken uitvoeren en retourneren. Als u niet wilt dat de handler opnieuw wordt uitgevoerd, stelt u de vlag EVCF_REMOVEFROMLIST in de pdwFlags-parameter van de initialisatiemethode in. Als deze vlag is ingesteld, verwijdert het schijfopruimingsbeheer de handler uit de lijst en verwijdert de registervermeldingen van de handler. U moet de registervermeldingen opnieuw toevoegen om de handler opnieuw uit te voeren. Deze vlag wordt doorgaans gebruikt voor handlers die slechts één keer worden uitgevoerd.

Een handler voor schijfopruiming registreren

Als u een handler wilt toevoegen aan de lijst met schijfopruimingsbeheer, moeten bepaalde sleutels en waarden worden toegevoegd aan het Windows-register.

De CLSID van een handler registreren

Net als bij alle COM-objecten moet de GUID en het DLL-bestand van de handler worden geregistreerd onder de CLSID- sleutel in HKEY_CLASSES_ROOT. U kunt ook een pictogram registreren dat naast de naam van de handler wordt weergegeven in de keuzelijst van schijfopruimingsbeheer, maar dit is optioneel. In het volgende voorbeeld ziet u de sleutels, waarden en betrokken gegevens.

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

Een handler registreren bij Schijfopruimingsbeheer: Algemeen

Om de registratie te voltooien, moet een handler een sleutel met de specifieke gegevens toevoegen, zoals hier wordt weergegeven. In de rest van deze sectie wordt de inhoud van deze sleutel besproken.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  VolumeCaches
                     Handler's Key

Over het algemeen is de naam van de sleutel die de gegevens van een handler bevat vernoemd naar het type bestand dat het behandelt, zoals gedownloade programbestanden, maar dit is geen vereiste. De volgende tabel bevat informatie over de mogelijke waarden die onder deze sleutel zijn gevonden.

Notitie

Alleen de standaardwaarde die de klasse-id (CLSID) van de handler opgeeft, is vereist dat alle andere waarden optioneel zijn.

Waarde Type Betekenis
Verstek REG_SZ De CLSID van de handler zoals geregistreerd onder HKEY_CLASSES_ROOT\CLSID.
GeavanceerdeKnopTekst REG_SZ Tekst voor de optionele knop waarop gebruikers kunnen klikken om de gebruikersinterface van de handler weer te geven. Het & teken kan vóór een teken worden geplaatst om een sneltoets voor de knop toe te wijzen. De waarde AdvancedButtonText wordt genegeerd door handlers die IEmptyVolumeCache2::InitializeExweergeven.
CleanupString REG_SZ Opdrachtregel waarmee een uitvoerbaar bestand en optionele opdrachtregelparameters worden opgegeven. Deze opdrachtregel wordt uitgevoerd bij het voltooien van het opschonen van de schijf.
CSIDL REG_DWORD Een systeemonafhankelijke id voor een speciale map die moet worden opgenomen in de bestandszoekopdracht. Deze waarde moet bijvoorbeeld worden ingevoerd als een numerieke waarde, 0x0000001c in plaats van CSIDL_LOCAL_APPDATA. Zie CSIDL-voor een lijst met mogelijke waarden. Er kan slechts één waarde worden gebruikt.
Als de mapwaarde is opgegeven, wordt de locatie die door de CSIDL-waarde wordt aangegeven toegevoegd aan die informatie om een zoekpad te vormen. Denk bijvoorbeeld aan het volgende scenario.
  • De CSIDL-waarde wordt opgegeven als 0x0000000d (CSIDL_MYMUSIC)
  • De map Mijn muziek bevindt zich in C:\Documents and Settings\gebruikersnaam\Mijn muziek
  • De mapwaarde bevat 'Jazz\Singers'
Het resultaat van dat scenario is dat de handler voor schijfopruiming zoekt in de map C:\Documents and Settings\gebruikersnaammap \My Music\Jazz\Singers. Houd er rekening mee dat de slash voorafgaand aan de mapwaarde wordt toegevoegd als deze niet aanwezig is.
Beschrijving REG_SZ Beschrijvende tekst die wordt weergegeven onder de keuzelijst van schijfopruimingsbeheer wanneer de naam van de handler is geselecteerd. Hier kunt u uitleggen wat de handler doet, met welke bestanden het zich bezighoudt en eventuele andere informatie die aan de gebruiker is toe te lichten. Als IEmptyVolumeCache2::InitializeEx niet wordt weergegeven door de handler, kan deze tekst worden overschreven door de IEmptyVolumeCache van de handler::Initialize methode door een alternatieve tekenreeks op te geven in de ppwszDescription parameter wanneer de methode wordt aangeroepen.
Beeldscherm REG_SZ De naam van de handler die in het lijstvak van de schijfopruimingsmanager moet worden weergegeven. Als IEmptyVolumeCache2::InitializeEx niet wordt weergegeven door de handler, kan deze tekst worden overschreven via de IEmptyVolumeCache::Initialize methode door een alternatieve tekenreeks op te geven in de parameter ppwszDisplayName wanneer de methode wordt aangeroepen.
FileList REG_SZ of REG_MULTI_SZ Een lijst met bestanden die door deze handler zijn gezocht en opgeschoond. U kunt jokertekens opgeven met behulp van de ? of * tekens. Als de waarde van het type REG_SZ is, worden meerdere extensies gescheiden met behulp van | of : tekens, zonder spaties aan beide zijden.
Als de vlag DDEVCF_REMOVEDIRS is ingesteld in de waarde Vlaggen, kunnen deze waarden mapnamen en bestanden opgeven.
Vlaggen REG_DWORD of REG_BINARY Vlaggen die elementen van de zoek- en schoonmaakprocedure beheren. Een of meer van de volgende waarden.
  • DDEVCF_DOSUBDIRS (0x00000001). Recursief zoeken en verwijderen.
  • DDEVCF_REMOVEAFTERCLEAN (0x00000002). Nadat de handler eenmaal is uitgevoerd, verwijdert u deze uit het register.
  • DDEVCF_REMOVEREADONLY (0x00000004). Verwijder bestanden die voldoen aan de zoekcriteria, zelfs als ze alleen-lezen zijn.
  • DDEVCF_REMOVESYSTEM (0x00000008). Verwijder bestanden die voldoen aan de zoekcriteria, zelfs als het systeembestanden zijn.
  • DDEVCF_REMOVEHIDDEN (0x00000010). Verwijder bestanden die voldoen aan de zoekcriteria, zelfs als ze verborgen bestanden zijn.
  • DDEVCF_DONTSHOWIFZERO (0x00000020). Geef deze handler niet weer in het schijfopruimingsbeheer als er geen bestanden voldoen aan de zoekcriteria.
  • DDEVCF_REMOVEDIRS (0x00000040). Vergelijk de waarde van de FileList met de mappen en verwijder overeenkomsten en al hun submappen.
  • DDEVCF_RUNIFOUTOFDISKSPACE (0x00000080). Voer deze handler alleen uit als de beschikbare schijfruimte lager is dan de kritieke waarde, bepaald door het schijfopruimingsbeheer, waarbij de vlag EVCF_OUTOFDISKSPACE wordt ingesteld via IEmptyVolumeCache::Initialiseer of IEmptyVolumeCache2::InitializeEx.
  • DDEVCF_REMOVEPARENTDIR (0x00000100). Verwijder de bovenliggende map van de opgegeven bestanden zodra het opschoonprogramma is uitgevoerd.
  • DDEVCF_PRIVATE_LASTACCESS (0x10000000). Gebruik de waarde LastAccess, indien opgegeven, om na te gaan welke bestanden moeten worden opgeschoond. Deze vlag wordt genegeerd wanneer u de DataDrivenCleaner gebruikt elke opgegeven LastAccess-waarde altijd wordt gebruikt.
Map REG_SZ, REG_MULTI_SZ of REG_EXPAND_SZ Een specifieke map of mappen om te zoeken naar items die overeenkomen met items in de filelist-waarde. U kunt jokertekens opgeven met behulp van de ? of * tekens. Als de waarde van het type REG_SZ is, worden meerdere mapnamen gescheiden met behulp van | teken, zonder spaties aan beide zijden.
Als er een CSIDL-waarde aanwezig is, kan slechts één map worden opgegeven in deze waarde. De locatie die wordt aangegeven door de CSIDL-waarde, wordt toegevoegd aan het begin van dat mappad om een zoekpad op te stellen. Zie de beschrijving van de CSIDL-waarde voor een voorbeeld.
Als deze waarde ontbreekt in Windows Vista Service Pack 1 (SP1) en hoger, wordt de opschoningshandler genegeerd en wordt S_FALSE geretourneerd bij initialisatie.
Als deze waarde ontbreekt in de oorspronkelijke versie van Windows Vista en eerder, wordt de hoofdmap van het huidige volume gebruikt. De DDEVCF_DOSUBDIRS flag is in dat geval nodig om de hele schijf te doorzoeken. Zonder dit wordt alleen de hoofdmap zelf doorzocht.
Er moet een of meerdere stations worden opgegeven. Dit kan worden opgegeven via de CSIDL-waarde of via een REG_EXPAND_SZ tekenreeks. Maar als deze opties niet beschikbaar zijn, moet het station waarop gezocht moet worden in de mapnaam worden opgegeven. Gebruik ?: om de map op de huidige schijf te doorzoeken.
IconPad REG_SZ of REG_EXPAND_SZ Het pad naar de resource waaruit een pictogram moet worden opgehaald dat moet worden gebruikt in combinatie met de handler.
LastAccess REG_DWORD of REG_BINARY Het aantal dagen dat moet zijn verstreken sinds een bestand voor het laatst is geopend of dat er een map is gemaakt om dat bestand of de map te kunnen opschonen.
Voorrang REG_DWORD of REG_BINARY Bepaalt de volgorde waarin de handler wordt uitgevoerd ten opzichte van andere handlers. Hoe hoger het getal, hoe eerder in het proces dat door de handler wordt uitgevoerd. Er is geen gedefinieerd bereik; ieder getal is acceptabel.
PropertyBag REG_SZ De CLSID van een resource die wordt gebruikt om gelokaliseerde tekst te bieden voor de weergavenaam, beschrijving en knoptekst. Deze resource is handig in de situatie waarin een handler geen IEmptyVolumeCache implementeert en de handler wordt uitgevoerd onder Microsoft Windows NT of Windows XP.
Het schijfopruimingsbeheer controleert eerst of de initialisatieroutine van de handler deze tekenreeksen heeft geretourneerd, zoals het geval is wanneer IEmptyVolumeCache2 is geïmplementeerd. Als dat niet lukt, wordt de manager vervolgens overschakelen naar een eigenschapstas met de naam in deze waarde. Als er geen is opgegeven, wordt de tekst opgehaald uit het register.
StaatVlaggen REG_DWORD Door het uitvoerbare bestand van het schijfopschoonbeheer uit te voeren Cleanmgr.exe vanaf een opdrachtregel, kunt u het opschonen van profielen declareren. Deze profielen bestaan uit een subset van de beschikbare handlers en krijgen een uniek numeriek label. Hiermee kunt u het uitvoeren van verschillende sets handlers op verschillende tijdstippen automatiseren.
De opdrachtregel "cleanmgr.exe /sageset:nnnn", waar nnnn- een uniek numeriek label is, toont een gebruikersinterface waarmee u de handlers kunt kiezen die bij dat profiel horen. Naast het definiëren van het profiel schrijft de parameter sageset ook een waarde met de naam StateFlagsnnnn, waarbij nnnn- het label is dat u in de parameter hebt gebruikt, naar alle subsleutels onder VolumeCaches. Er zijn twee mogelijke gegevenswaarden voor deze vermeldingen.
  • 0: Voer deze handler niet uit wanneer dit profiel wordt uitgevoerd.
  • 2: Neem deze handler op wanneer dit profiel wordt uitgevoerd.

Stel dat de opdrachtregel 'cleanmgr.exe /sageset:1234' wordt uitgevoerd. In de weergegeven gebruikersinterface kiest de gebruiker gedownloade programmabestanden, maar kiest niet tijdelijke internetbestanden. De volgende waarden worden vervolgens naar het register geschreven.
HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  VolumeCaches
                     Downloaded Program Files
                        StateFlags1234 = 0x00000002
                     Internet Cache Files
                        StateFlags1234 = 0x00000000

De opdrachtregelcleanmgr.exe /sagerun:nnnn', waarbij de waarde van nnnn overeenkomt met het label dat is gedeclareerd met de parameter sageset, worden alle handlers uitgevoerd die in dat profiel zijn geselecteerd.
Een algemene StateFlags-waarde wordt naar het register geschreven wanneer Schijfopruiming normaal wordt uitgevoerd. Met deze waarde wordt de status (ingeschakeld of uitgeschakeld) van de handler opgeslagen wanneer deze de laatste keer als optie voor de gebruiker werd gepresenteerd. Er zijn twee mogelijke gegevenswaarden voor deze vermeldingen.
  • 0: De handler is niet geselecteerd.
  • 1: De handler is geselecteerd.

Een handler registreren bij schijfopruimingsbeheer: Windows 2000- of hogersystemen

Het opgeven van weergavetekst in het register kan het lastig maken om software te lokaliseren. Daarom ondersteunen Windows 2000 en Windows XP de interface IEmptyVolumeCache2 met de voorkeurs initialisatiemethode InitializeEx. Onder Windows 2000 of later wordt er altijd geprobeerd om IEmptyVolumeCache2::InitializeEx aan te roepen voordat IEmptyVolumeCache::Initialize. Het systeem gebruikt alleen initialiseer om een handler te initialiseren als IEmptyVolumeCache2 niet wordt weergegeven.

Wat het register betreft, is het enige verschil onder Windows 2000 of hoger dat u de waarden AdvancedButtonText, Display en Description weglaat wanneer IEmptyVolumeCache2::InitializeEx wordt weergegeven door de handler. Deze waarden, die correct gelokaliseerde tekst bevatten, worden aan het schijfopruimingsbeheer verstrekt wanneer deze InitializeEx-aanroept.

Het DataDrivenCleaner-object gebruiken

Een eenvoudige handler voor schijfopruiming, de DataDrivenCleaner, wordt geleverd door het besturingssysteem. Als u dit object wilt gebruiken als handler in plaats van uw eigen object te implementeren, gebruikt u de CLSID {C0E13E61-0CC6-11d1-BBB6-0060978B2AE6} als de standaardwaarde voor de subsleutel van de handler onder VolumeCaches zoals beschreven in Een handler registreren met Schijfopruimingsbeheer: Algemeen.

De DataDrivenCleaner maakt geen IEmptyVolumeCache2beschikbaar, zodat de waarden weergave en beschrijving worden opgegeven via het register. Wanneer u deze tekenreeksen declareren, moet u er rekening mee houden dat dit lokalisatieproblemen kan veroorzaken. Gelokaliseerde tekst kan worden opgegeven via de PropertyBag-waarde. De waarde AdvancedButtonText wordt genegeerd omdat er geen gebruikersinterface en dus geen knop om deze weer te geven beschikbaar is voor deze handler.

Voorbeeldregistratie van een schijfopruimingshandler

Hieronder ziet u een voorbeeld van een registratie voor een schijfopruimingshandler die is geïmplementeerd door The Phone Company. Deze handler implementeert zowel IEmptyVolumeCache als IEmptyVolumeCache2, en biedt dus AdvancedButtonText, Description en Display-waarden voor het geval deze wordt gebruikt op een computer met Windows 98. De handler combineert de CSIDL- en mapwaarden om te zoeken naar bestanden in de map C:\Program Files\The Phone Company\Temp en de vlag DDEVCF_DOSUBDIRS is ingesteld, zodat ook de submappen worden doorzocht. Alleen die bestanden met .tmp- en .tpc-extensies worden in aanmerking genomen voor opschoning en de vlag DDEVCF_PRIVATE_LASTACCESS zodanig is ingesteld dat alleen die bestanden die gedurende 14 dagen of langer niet zijn geopend, worden overwogen. De vlag DDEVCF_DONTSHOWIFZERO wordt ook ingesteld, zodat de handler niet wordt weergegeven in de lijst, tenzij er opschoonkandidaten zijn gevonden.

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}