다음을 통해 공유


디스크 정리 처리기 만들기

컴퓨터 세계에서 몇 번이고 입증된 한 가지 공리적인 점은 컴퓨터의 스토리지 용량 크기에 관계없이 결국 컴퓨터 용량을 채우게 된다는 것입니다. 시간이 지남에 따라 컴퓨터 하드 디스크의 평균 크기가 크게 증가하지만, 애플리케이션도 그에 따라 증가하여 사용자가 더 많은 여유 하드 디스크 공간을 만들 방법을 찾고 있습니다. 또한 애플리케이션이 백업 또는 성능상의 이유로 만드는 많은 임시 파일에 의해 사용 가능한 공간이 줄어듭니다. 디스크 공간이 낮아지면 애플리케이션에서 사용하는 공간의 양을 줄여야 합니다. 디스크 공간은 다음을 비롯한 다양한 수단을 사용하여 해제할 수 있습니다.

  • 파일을 삭제합니다.
  • 파일 압축
  • 파일을 백업 매체로 이동합니다.
  • 원격 서버로 파일 전송

정리에 적합한 파일은 다음과 같습니다.

  • 사용자가 다시는 필요하지 않은 파일입니다.
  • 성능상의 이유로만 존재하는 임시 파일입니다.
  • 필요한 경우 설치 CD에서 복원할 수 있는 파일입니다.
  • 이전 백업 파일과 같은 최신 버전으로 대체되었을 수 있는 데이터 파일입니다.
  • 오래 전에 사용되지 않은 이전 파일입니다.

삭제는 성능상의 이유로 일시적으로 캐시된 파일과 같이 사용자가 다시는 필요하지 않은 파일에 특히 적합합니다. 삭제는 설치 CD에서 다시 로드할 수 있는 그래픽 파일과 같이 쉽게 복원되는 파일에도 적합합니다. 사용자가 나중에 필요하거나 다시 구성하기 어려운 파일은 압축 또는 백업에 더 적합한 후보입니다.

사용자가 파일 시스템을 수동으로 정리해야 하는 것은 좋은 솔루션이 아닙니다. 사용자는 많은 파일이 어디에 있는지 또는 안전하게 제거할 수 있는 파일을 인식하는 방법을 모를 수 있습니다. 또한 사용자가 필수 파일을 삭제할 위험이 있습니다.

디스크 정리 유틸리티의 다음 패싯은 이 항목에서 설명합니다.

Windows 디스크 정리 유틸리티

Windows 98부터 Windows 운영 체제에는 사용자가 사용 가능한 하드 디스크 공간을 훨씬 쉽게 관리할 수 있는 유틸리티인 디스크 정리가 포함됩니다. 디스크 정리 유틸리티는 가능한 한 많은 디스크 공간을 확보하고 사용자가 실수로 필수 파일을 삭제할 위험을 줄이도록 설계되었습니다.

디스크 정리는 세 가지 방법으로 시작할 수 있습니다.

  • 사용자는 시작클릭하여 디스크 정리를 시작할 수 있습니다. 모든 프로그램, 보조시스템 도구; 그런 다음 디스크 정리클릭합니다.
  • 시스템은 사용하지 않는 디스크 공간이 중요 모드에 도달했다는 메시지 상자를 사용자에게 알깁니다. 2.25GB(기가바이트)를 초과하는 드라이브의 중요 모드 임계값은 200MB입니다. 후속 경고는 80, 50 및 1MB로 지정됩니다. 사용자에게 디스크 공간을 수동으로 해제하거나 디스크 정리 유틸리티를 시작하는 옵션이 제공됩니다.
  • 사용자는 Windows 예약 작업 마법사(이전 시스템의 유지 관리 마법사라고 함)가 예약된 시간에 디스크 정리 유틸리티를 자동으로 실행하게 할 수 있습니다.

디스크 정리에 내재된 기본 과제는 필수 파일을 삭제하지 않고 가능한 한 많은 디스크 공간을 확보하는 것입니다. 정리를 위해 파일을 표시하는 표준 방법은 없으므로 단일 애플리케이션은 모든 unessential 파일을 안정적으로 검색하고 정리할 수 없습니다. 디스크 정리 유틸리티는 단일 디스크 정리 관리자디스크 정리 처리기 컬렉션 간에 정리 작업을 분할하여 이 문제를 해결합니다.

디스크 정리 유틸리티가 실행되면 사용자에게 다음 대화 상자가 표시됩니다. (컴퓨터에 디스크 또는 디스크 파티션이 두 개 이상 있는 경우 이 대화 상자가 표시되기 전에 먼저 드라이브를 선택하라는 메시지가 표시됩니다.)

정리 대화 상자의 스크린샷

디스크 정리 관리자는 운영 체제의 일부입니다. 앞의 그림에 표시된 대화 상자를 표시하고, 사용자 입력을 처리하고, 정리 작업을 관리합니다. 불필요한 파일의 실제 선택 및 정리는 디스크 정리 관리자의 목록 상자에 표시된 개별 디스크 정리 처리기에 의해 수행됩니다. 사용자는 디스크 정리 관리자의 UI에서 확인란을 선택하거나 선택 취소하여 개별 처리기를 사용하거나 사용하지 않도록 설정할 수 있습니다.

각 처리기는 잘 정의된 파일 집합을 담당합니다. 예를 들어 그림에서 선택한 처리기는 다운로드한 프로그램 파일 정리를 담당합니다. 그림에서 선택한 처리기는 파일 보기 단추도 제공합니다. 사용자는 단추를 클릭하여 처리기에 일반적으로 정리할 파일 또는 파일 클래스를 지정할 수 있는 Windows 탐색기 창에 UI를 표시하도록 요청할 수 있습니다.

Windows에는 여러 디스크 정리 처리기가 제공되지만 다른 애플리케이션에서 생성된 파일을 처리하도록 설계되지 않았습니다. 대신, 디스크 정리 관리자는 개발자가 자신의 디스크 정리 처리기를 구현하고 등록할 수 있도록 하여 유연하고 확장 가능하도록 설계되었습니다. 모든 개발자는 디스크 정리 처리기를 구현하고 등록하여 사용 가능한 디스크 정리 서비스를 확장할 수 있습니다.

임시 파일을 생성하는 모든 애플리케이션은 디스크 정리 처리기를 구현하고 등록할 수 있고 등록해야 합니다. 이렇게 하면 사용자가 애플리케이션의 임시 파일을 편리하고 안정적으로 관리할 수 있습니다. 처리기를 구현할 때 영향을 받는 파일을 결정하고 실제 정리가 수행되는 방식을 결정할 수 있습니다.

구현 기본 사항

정리 처리기는 인프로세스(in-process) 서버 COM(구성 요소 개체 모델) 개체입니다. Windows는 사용할 DataDrivenCleaner라는 기존 처리기 개체를 제공합니다. 더 많은 유연성을 위해 직접 처리기를 구현하도록 선택할 수도 있습니다. 그런 다음 이러한 개체를 사용하여 파일, 사용 가능한 디스크 공간을 선택하는 방법을 지정할 수 있으며, 구현된 처리기의 경우 보다 세분화된 컨트롤을 위한 선택적 UI를 표시할 수 있습니다. 이 섹션에서는 사용자 고유의 처리기를 구현하는 문제를 다룹니다. 자세한 내용은 DataDrivenCleaner 개체 사용에 대한 내용을 참조하십시오.

디스크 정리 처리기는 이러한 5가지 기본 작업을 수행해야 합니다.

  • 처리기 개체를 초기화합니다.
  • 디스크를 스캔하여 해제할 수 있는 디스크 공간을 확인합니다.
  • 정리할 파일에 대한 사용자 피드백을 얻으려면 UI를 표시합니다. (선택 사항)
  • 정리를 수행합니다.
  • 끄세요.

디스크 정리 관리자가 이러한 작업을 관리할 수 있도록 하려면 처리기에서 Windows 98용 IEmptyVolumeCache또는 Windows Millennium Edition(Windows Me), Windows 2000 및 Windows XP용 IEmptyVolumeCache2내보내야 합니다. IEmptyVolumeCache2IEmptyVolumeCache를 상속하여 InitializeEx라는 추가 메서드만을 추가하므로 둘 다 구현하기 위해 비교적 적은 추가 작업이 필요합니다. 처리기가 이러한 운영 체제 중 하나에만 적합하지 않은 경우 두 인터페이스를 모두 내보내야 합니다.

이러한 인터페이스를 내보내려면 5가지 기본 작업에 해당하는 이러한 메서드를 구현해야 합니다.

Initialize/InitializeEx

매우 유사한 두 초기화 메서드는 디스크 정리 유틸리티를 실행할 때 호출됩니다. Windows 98 디스크 정리 관리자는 처리기의 IEmptyVolumeCache::Initialize 메서드를 호출합니다. 그러나 Windows Millennium Edition(Windows Me), Windows 2000 또는 Windows XP 디스크 정리 관리자는 먼저 IEmptyVolumeCache2::InitializeEx를 호출하려고 시도하며, IEmptyVolumeCache2 가 처리기에 의해 노출되지 않는 경우에만 IEmptyVolumeCache::Initialize를 사용합니다. 디스크 정리 관리자는 처리기의 레지스트리 키 및 정리할 디스크 볼륨과 같은 정보를 메서드에 전달합니다.

두 방법 모두 다양한 표시 문자열을 반환하고 하나 이상의 플래그를 설정할 수 있습니다. 두 방법의 주요 차이점은 디스크 정리 관리자에 표시되는 텍스트를 처리하는 방법입니다. 다음 세 문자열이 영향을 받습니다.

문자열 목적 초기화 InitializeEx
표시 이름 디스크 정리 관리자의 목록 상자에 표시되는 처리기의 이름입니다. ppwszDisplayNameNULL인 경우, 레지스트리에서 기본값이 검색됩니다. 레지스트리 값이 사용되지 제대로 지역화된 문자열은 ppwszDisplayName에 지정해야 합니다.
묘사 처리기의 이름을 선택하면 목록 상자 아래에 설명 텍스트가 표시됩니다. ppwszDescriptionNULL인 경우, 기본값이 레지스트리에서 검색됩니다. 레지스트리 값이 사용되지 제대로 지역화된 문자열은 ppwszDescription에 지정해야 합니다.
단추 텍스트 사용자가 처리기의 UI를 표시할 수 있는 선택적 단추의 텍스트입니다. 사용할 수 있는 매개 변수가 없습니다. 레지스트리에 지정해야 합니다. 레지스트리 값이 사용되지 않으면, ppwszBtnText에 제대로 지역화된 문자열을 지정해야 합니다.

두 초기화 메서드에 있는 pdwFlags 매개 변수는 동일한 플래그 집합을 인식합니다. 이러한 플래그 중 두 가지는 디스크 정리 관리자에 의해 메서드에 전달됩니다.

  • EVCF_설정모드

    디스크 정리 관리자가 일정에 따라 실행되는 경우 EVCF_SETTINGSMODE 플래그를 설정합니다. 이 플래그가 설정되면 디스크 정리 관리자는 getSpaceUsed , 제거또는 showProperties 메서드를호출하지 않습니다. 처리기의 Initialize 또는 InitializeEx 메서드는 일반적으로 GetSpaceUsedPurge에 의해 수행되는 모든 작업을 처리해야 합니다. 사용자 피드백을 받을 기회가 없으므로 정리하기에 매우 안전한 파일만 터치해야 합니다. 초기화 메서드의 pcwszVolume 매개 변수를 무시하고 드라이브에 관계없이 불필요한 파일을 정리해야 합니다.

  • EVCF_OUTOFDISKSPACE

    EVCF_OUTOFDISKSPACE 플래그가 설정되면 사용자의 디스크 드라이브 공간이 매우 부족합니다. 처리기는 성능이 저하되더라도 파일을 삭제하는 데 적극적이어야 합니다. 그러나 처리기는 애플리케이션이 실패하거나 사용자가 데이터를 잃게 하는 파일을 삭제해서는 안 됩니다.

나머지 플래그는 디스크 정리 처리기에 의해 설정되고 디스크 정리 관리자로 반환됩니다. 자세한 내용은 IEmptyVolumeCache::InitializeIEmptyVolumeCache2::InitializeEx대한 메서드 참조 페이지를 참조하세요.

  • EVCF_DONTSHOWIFZERO

    GetSpaceUsed함수가 반환하는값이 처리기가 일부 디스크 공간을 확보할 수 있음을 나타내는 경우에만 디스크 정리 관리자의 목록 상자에 처리기를 표시합니다.

  • EVCF_ENABLEBYDEFAULT

    처리기가 기본적으로 사용하도록 설정되도록 지정합니다. 사용자가 디스크 정리 관리자의 처리기 목록에서 확인란을 선택 취소하여 디스크 정리를 사용하지 않도록 설정하지 않는 한 디스크 정리가 수행될 때마다 실행됩니다.

  • EVCF_ENABLEBYDEFAULT_AUTO

    예약된 정리 중에 처리기가 자동으로 실행되도록 지정합니다.

  • EVCF_HASSETTINGS

    핸들러에 표시할 UI가 있는 경우 이 플래그를 설정합니다. 이에 대한 응답으로 디스크 정리 관리자는 목록 상자에서 해당 처리기를 선택하면 단추를 표시합니다. 해당 단추를 클릭하면 디스크 정리 관리자가 ShowProperties를 호출합니다.

  • EVCF_REMOVEFROMLIST

    처리기가 한 번 실행된 후 사용 가능한 처리기 목록에서 처리기의 이름을 삭제합니다. 처리기의 레지스트리 정보도 삭제됩니다.

GetSpaceUsed

디스크 정리 관리자는 이 메서드를 호출하여 디스크 정리 처리기가 잠재적으로 해제할 수 있는 공간을 결정합니다. 그런 다음 디스크 정리 관리자는 목록 상자에서 처리기 이름 오른쪽에 해당 값을 표시합니다. 이 작업은 관리자가 시작될 때 및 관리자의 기본 UI가 표시되기 전에 디스크 정리 관리자에 등록된 모든 처리기에서 수행됩니다. GetSpaceUsed호출되면 처리기는 자신이 담당하는 파일을 검색하고, 정리 후보인지 확인하고, 해제할 수 있는 디스크 공간의 양을 반환해야 합니다.

스캔은 긴 프로세스가 될 수 있으므로 디스크 정리 관리자는 이 메서드의 picb 매개 변수를 사용하여 IEmptyVolumeCacheCallBack 인터페이스에 포인터를 전달합니다. 처리기는 검색하는 동안 두 가지 용도로 사용되는 IEmptyVolumeCacheCallBack::ScanProgress를 호출하기 위해 주기적으로 인터페이스를 사용합니다.

  • 디스크 정리 관리자가 진행률 표시줄을 업데이트하여 사용자에게 검사 진행 상황을 알릴 수 있습니다.
  • 진행률 창의 취소 버튼이 클릭되면 핸들러에게 검사를 중지하도록 알립니다. 해당 단추 이벤트는 처리기에 직접 전달되지 않습니다. 대신 디스크 정리 관리자는 다음에 GetSpaceUsedIEmptyVolumeCacheCallBack::ScanProgress호출할때 E_ABORT 반환합니다.

속성 표시

정리를 시작하기 전에 처리기는 일반적으로 Windows 탐색기 창 형식으로 UI를 표시하여 사용자가 처리기에서 정리하도록 선택한 파일 목록 또는 파일 클래스를 볼 수 있습니다. Initialize 또는 InitializeEx 호출될 때 처리기가 EVCF_HASSETTINGS 플래그를 설정하는 경우 사용자는 디스크 정리 관리자에서 해당 용도로 표시된 단추를 클릭하여 UI를 요청할 수 있습니다. 단추 텍스트는 처리기마다 다르지만 "파일 보기", "페이지 보기" 및 "옵션"은 일반적인 레이블입니다.

단추를 클릭하면 디스크 정리 관리자가 ShowProperties 호출하여 처리기에 UI를 표시하라는 메시지를 표시합니다. UI는 ShowProperties 메서드의 hwnd 매개 변수에 핸들이 전달되는 창의 자식으로 만들어야 합니다.

숙청

디스크 정리 관리자는 처리기의 Purge 메서드를 호출하여 정리를 동작으로 설정합니다. 메서드의 picb 매개 변수는 디스크 정리 관리자의 IEmptyVolumeCacheCallBack 인터페이스에 대한 포인터입니다. GetSpaceUsed 메서드와 마찬가지로 처리기는 콜백 인터페이스를 주기적으로 사용하여 진행률을 보고하고 사용자가 취소클릭했는지 여부를 디스크 정리 관리자에 쿼리해야 합니다. 그러나 Purge 메서드는 IEmptyVolumeCacheCallBack::PurgeProgress를 호출해야 하며, ScanProgress가 아닙니다.

비활성화

디스크 정리 관리자가 종료를 준비할 때 비활성화 메서드가 호출됩니다. 처리기는 필요한 정리 작업을 수행하고 반환해야 합니다. 처리기를 다시 실행하지 않으려면 초기화 메서드의 pdwFlags 매개 변수에서 EVCF_REMOVEFROMLIST 플래그를 설정합니다. 이 플래그가 설정되면 디스크 정리 관리자는 해당 목록에서 처리기를 제거하고 처리기의 레지스트리 항목을 삭제합니다. 처리기를 다시 실행하려면 레지스트리 항목을 다시 추가해야 합니다. 이 플래그는 일반적으로 한 번만 실행되는 처리기에 사용됩니다.

디스크 정리 처리기 등록

디스크 정리 관리자 목록에 처리기를 추가하려면 특정 키와 값을 Windows 레지스트리에 추가해야 합니다.

처리기의 CLSID 등록

모든 COM 개체와 마찬가지로 처리기 개체의 GUID 및 DLL은 HKEY_CLASSES_ROOTCLSID 키 아래에 등록되어야 합니다. 디스크 정리 관리자의 목록 상자에서 처리기 이름 옆에 표시되는 아이콘을 등록할 수도 있지만 선택 사항입니다. 다음 예제에서는 관련된 키, 값 및 데이터를 보여줍니다.

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

디스크 정리 관리자에 핸들러 등록: 일반

등록을 완료하려면 처리기가 여기에 표시된 대로 세부 정보를 포함하는 키를 추가해야 합니다. 이 섹션의 나머지 부분에서는 이 키의 내용에 대해 설명합니다.

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  VolumeCaches
                     Handler's Key

일반적으로 처리기의 특정 사항을 보유하는 키의 이름은 다운로드한 프로그램 파일같이 처리하는 파일 형식에 대해 이름이 지정되지만 이는 요구 사항이 아닙니다. 다음 표에서는 이 키 아래에 있는 가능한 값을 자세히 설명합니다.

메모

처리기의 CLSID(클래스 식별자)를 지정하는 기본값만 있으면 다른 모든 값은 선택 사항입니다.

타입 의미
기본값 REG_SZ 등록된 처리기의 CLSID는 HKEY_CLASSES_ROOT\CLSID입니다.
고급 버튼 텍스트 REG_SZ 사용자가 클릭하여 처리기의 UI를 표시할 수 있는 선택적 단추에 대한 텍스트입니다. & 문자를 문자 앞에 배치하여 단추의 바로 가기 키를 할당할 수 있습니다. AdvancedButtonText 값은 IEmptyVolumeCache2::InitializeEx노출하는 처리기에서 무시됩니다.
CleanupString REG_SZ 실행 파일 및 선택적 명령줄 매개 변수를 지정하는 명령줄입니다. 이 명령줄은 디스크 정리가 완료될 때 실행됩니다.
CSIDL REG_DWORD 파일 검색에 포함할 특수 폴더에 대한 시스템 독립적 식별자입니다. 이 값은 CSIDL_LOCAL_APPDATA 대신 0x0000001c 숫자 값으로 입력해야 합니다. 가능한 값 목록은 CSIDL참조하세요. 단일 값만 사용할 수 있습니다.
폴더 값을 지정하면 CSIDL 값으로 표시된 위치가 해당 정보 앞에 추가되어 검색 경로를 작성합니다. 예를 들어 다음 시나리오를 고려해 보세요.
  • CSIDL 값은 0x0000000d(CSIDL_MYMUSIC)로 지정됩니다.
  • 내 음악 폴더는 C:\Documents and Settings\username\My Music에 있습니다.
  • 폴더 값에 "Jazz\Singers"가 포함됩니다.
이 시나리오의 결과는 디스크 정리 처리기가 C:\Documents and Settings\사용자 이름\My Music\Jazz\Singers 폴더를 검색하기 위한 것입니다. 폴더 값이 없으면 폴더 값 앞에 슬래시가 추가됩니다.
묘사 REG_SZ 처리기의 이름을 선택하면 디스크 정리 관리자의 목록 상자 아래에 설명 텍스트가 표시됩니다. 여기서는 처리기가 수행하는 작업, 처리기 자체와 관련된 파일 및 사용자에게 설명된 기타 정보를 설명할 수 있습니다. 처리기에 의해 IEmptyVolumeCache2::InitializeEx가 노출되지 않으면, 메서드 호출 시 ppwszDescription 매개 변수에 대체 문자열을 지정하여 처리기의 IEmptyVolumeCache::Initialize 메서드를 통해 이 텍스트를 대체할 수 있습니다.
디스플레이 REG_SZ 디스크 정리 관리자의 목록 상자에 표시할 처리기의 이름입니다. IEmptyVolumeCache2::InitializeEx이 처리기에 의해 노출되지 않는 경우, 이 텍스트는 메서드를 호출할 때 ppwszDisplayName 매개 변수에 대체 문자열을 지정함으로써 처리기의 IEmptyVolumeCache::Initialize 메서드를 통해 재정의할 수 있습니다.
파일 목록 REG_SZ 또는 REG_MULTI_SZ 이 처리기에서 검색하고 정리한 파일 목록입니다. ?을 사용하여 와일드카드를 지정할 수 있습니다. 또는 '*' 문자. 값이 REG_SZ 형식인 경우, 여러 확장은 '|' 또는 ':' 문자를 사용하여 구분되며, 이들 양쪽에 공백이 없습니다.
DDEVCF_REMOVEDIRS 플래그가 Flags 값에 설정된 경우 이러한 값은 디렉터리 이름과 파일을 지정할 수 있습니다.
플래그 REG_DWORD 또는 REG_BINARY 검색 및 정리 절차의 요소를 제어하는 플래그입니다. 다음 값 중 하나 이상입니다.
  • DDEVCF_DOSUBDIRS(0x00000001). 재귀적으로 검색하고 제거합니다.
  • DDEVCF_REMOVEAFTERCLEAN(0x00000002). 처리기를 한 번 실행한 후 레지스트리에서 제거합니다.
  • DDEVCF_REMOVEREADONLY(0x00000004). 읽기 전용인 경우에도 검색 조건을 충족하는 파일을 제거합니다.
  • DDEVCF_REMOVESYSTEM(0x00000008). 검색 조건을 충족하는 파일은 시스템 파일인 경우에도 제거합니다.
  • DDEVCF_REMOVEHIDDEN(0x00000010). 숨겨진 파일인 경우에도 검색 조건을 충족하는 파일을 제거합니다.
  • DDEVCF_DONTSHOWIFZERO(0x00000020). 검색 조건과 일치하는 파일이 없으면 디스크 정리 관리자에 이 처리기를 표시하지 마세요.
  • DDEVCF_REMOVEDIRS(0x00000040). FileList 값을 디렉터리와 일치시키고 일치 항목 및 모든 하위 디렉터리를 제거합니다.
  • DDEVCF_RUNIFOUTOFDISKSPACE(0x00000080). 사용 가능한 디스크 공간이 디스크 정리 관리자의 설정에 의해 결정된 중요한 값보다 낮은 경우에만, EVCF_OUTOFDISKSPACE 플래그를 IEmptyVolumeCache::Initialize 또는 IEmptyVolumeCache2::InitializeEx를 통해 설정하고 이 처리기를 실행합니다.
  • DDEVCF_REMOVEPARENTDIR(0x00000100). 클리너가 실행되면 지정된 파일의 부모 디렉터리를 제거합니다.
  • DDEVCF_PRIVATE_LASTACCESS(0x10000000). 정리해야 하는 파일을 확인하기 위해 LastAccess 값(제공된 경우)을 사용합니다. 제공된 LastAccess 값이 항상 사용되는 DataDrivenCleaner을 사용하는 경우, 이 플래그는 무시됩니다.
폴더 REG_SZ 형식, REG_MULTI_SZ 형식 또는 REG_EXPAND_SZ 형식 FileList 값에서 항목과 일치하는 항목을 검색할 특정 폴더 또는 폴더입니다. ?을 사용하여 와일드카드를 지정할 수 있습니다. 또는 * 문자들. 값이 REG_SZ 형식이면 | 을 사용하여 여러 폴더 이름이 구분됩니다. 문자, 양쪽에 공백이 없습니다.
CSIDL 값이 있으면 이 값에 하나의 폴더만 지정할 수 있습니다. CSIDL 값으로 표시된 위치는 검색 경로를 작성하기 위해 해당 폴더 경로 앞에 추가됩니다. 예제는 CSIDL 값 설명을 참조하세요.
이 값이 Windows Vista SP1(서비스 팩 1) 이상에 없으면 정리 처리기가 무시되고 초기화 시 S_FALSE 반환됩니다.
이 값이 Windows Vista 및 이전 버전의 원래 릴리스에 없는 경우 현재 볼륨의 루트 폴더가 사용됩니다. 이 경우 전체 드라이브를 검색하려면 DDEVCF_DOSUBDIRS 플래그가 필요합니다. 루트 폴더가 없으면 루트 폴더 자체만 검색됩니다.
드라이브 또는 드라이브를 지정해야 합니다. CSIDL 값 또는 REG_EXPAND_SZ 문자열을 통해 제공할 수 있습니다. 그러나 이러한 옵션을 제외하면 검색할 드라이브를 폴더 이름에 지정해야 합니다. ?: 현재 드라이브에서 폴더를 검색합니다.
아이콘 경로 REG_SZ 또는 REG_EXPAND_SZ 처리기와 연결하여 사용할 아이콘을 가져올 리소스의 경로입니다.
마지막 접근 REG_DWORD 또는 REG_BINARY 파일이나 디렉터리가 정리 대상으로 간주되기 위해 마지막으로 액세스되거나 생성된 이후 경과해야 하는 일 수입니다.
우선권 REG_DWORD 또는 REG_BINARY 처리기가 다른 처리기와 관련하여 실행되는 순서를 결정합니다. 숫자가 높을수록 핸들러가 실행되는 순서가 프로세스의 앞부분에 위치합니다. 어떤 숫자도 허용되는 정의된 범위가 없습니다.
프로퍼티백 REG_SZ 표시 이름, 설명 및 단추 텍스트에 대한 지역화된 텍스트를 제공하는 데 사용되는 리소스의 CLSID입니다. 이 리소스는 처리기가 IEmptyVolumeCache 구현하지 않고 처리기가 Microsoft Windows NT 또는 Windows XP에서 실행되는 경우에 유용합니다.
디스크 정리 관리자는 먼저 IEmptyVolumeCache2 구현되는 경우와 마찬가지로 처리기의 초기화 루틴이 해당 문자열을 반환했는지 여부를 확인합니다. 실패하면 관리자는 다음으로 이 값에 이름이 지정된 속성 모음으로 바뀝니다. 제공되지 않은 경우 레지스트리에서 텍스트를 검색합니다.
StateFlags REG_DWORD 명령줄에서 디스크 정리 관리자의 실행 가능한 파일 Cleanmgr.exe을 실행하여 정리프로필을 선언할 수 있습니다. 이러한 프로필은 사용 가능한 처리기의 하위 집합으로 구성되며 고유한 숫자 레이블이 제공됩니다. 이렇게 하면 다른 시간에 서로 다른 처리기 집합의 실행을 자동화할 수 있습니다.
명령줄 "cleanmgr.exe /sageset:nnnn", 여기서 nnnn 고유한 숫자 레이블인 경우 해당 프로필에 포함할 처리기를 선택할 수 있는 UI를 표시합니다. 매개 변수 sageset은 프로필 정의뿐만 아니라 StateFlagsnnnn라는 값을 작성하며, 이 값은 매개 변수에서 사용한 레이블인 nnnnVolumeCaches아래의 모든 하위 키에 기록됩니다. 이러한 항목에는 두 가지 가능한 데이터 값이 있습니다.
  • 0: 이 프로필을 실행할 때 이 처리기를 실행하지 마세요.
  • 2: 이 프로필을 실행할 때 이 처리기를 포함합니다.

예를 들어 명령줄 "cleanmgr.exe /sageset:1234"가 실행되고 있다고 가정합니다. 표시되는 UI에서 사용자는 다운로드한 프로그램 파일 선택하지만 임시 인터넷 파일 선택하지 않습니다. 다음 값은 레지스트리에 기록됩니다.
HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  VolumeCaches
                     Downloaded Program Files
                        StateFlags1234 = 0x00000002
                     Internet Cache Files
                        StateFlags1234 = 0x00000000

명령줄 "cleanmgr.exe /sagerun:nnnn"입니다. 여기서 nnnn 값은 sageset 매개 변수로 선언된 레이블과 일치하며 해당 프로필에서 선택한 모든 처리기를 실행합니다.
디스크 정리가 정상적으로 실행되면 제네릭 StateFlags 값이 레지스트리에 기록됩니다. 이 값은 마지막으로 사용자에게 옵션으로 제공된 처리기의 상태(선택됨 또는 선택 취소됨)를 저장합니다. 이러한 항목에는 두 가지 가능한 데이터 값이 있습니다.
  • 0: 처리기가 선택되지 않았습니다.
  • 1: 처리기가 선택되었습니다.

디스크 정리 관리자에 처리기 등록: Windows 2000 이상 시스템

레지스트리에 표시 텍스트를 지정하면 소프트웨어를 지역화하기가 어려울 수 있습니다. 이러한 이유로 Windows 2000 및 Windows XP는 InitializeEx기본 초기화 방법을 사용하여 IEmptyVolumeCache2 인터페이스를 지원합니다. Windows 2000 이상에서는 항상 IEmptyVolumeCache2::InitializeEx 를 호출하려고 시도한 후에 IEmptyVolumeCache::Initialize를 호출합니다. 시스템은 IEmptyVolumeCache2가 노출되지 않은 경우에만 Initialize을 사용하여 처리기를 초기화합니다.

레지스트리와 관련하여 Windows 2000 이상의 유일한 차이점은 IEmptyVolumeCache2::InitializeEx 처리기에서 노출될 때 AdvancedButtonText, Display 및 Description 값을 생략할 수 있다는 것입니다. 올바르게 지역화된 텍스트를 포함하는 이러한 값은 InitializeEx호출할 때 디스크 정리 관리자에게 제공됩니다.

DataDrivenCleaner 개체 사용

DataDrivenCleaner라는 기본 디스크 정리 처리기는 운영 체제에서 제공합니다. 이 개체를 직접 구현하는 대신 처리기로 사용하려면 디스크 정리 관리자에 처리기 등록: 일반 설명한 대로 CLSID {C0E13E61-0CC6-11d1-BBB6-0060978B2AE6}을 VolumeCaches 처리기 하위 키의 기본값으로 사용합니다.

DataDrivenCleaner는 IEmptyVolumeCache2노출하지 않으므로 레지스트리를 통해 표시 및 설명 값이 제공됩니다. 이러한 문자열을 선언할 때 지역화 문제가 발생할 수 있다는 점에 유의하세요. PropertyBag 값을 통해 지역화된 텍스트를 제공할 수 있습니다. AdvancedButtonText 값은 UI가 없기 때문에 무시되며, 따라서 이를 표시할 단추도 이 처리기에서는 사용할 수 없습니다.

디스크 정리 처리기의 등록 예제

다음은 전화 회사에서 구현한 디스크 정리 처리기에 대한 등록 예제를 보여 줍니다. 이 처리기는 IEmptyVolumeCacheIEmptyVolumeCache2모두 구현하므로 Windows 98을 실행하는 컴퓨터에서 사용되는 경우 AdvancedButtonText, Description 및 Display 값을 제공합니다. 처리기는 CSIDL 및 폴더 값을 결합하여 C:\Program Files\The Phone Company\Temp 디렉터리에서 파일을 검색하고 하위 디렉터리도 검색되도록 DDEVCF_DOSUBDIRS 플래그가 설정됩니다. .tmp 및 .tpc 확장명이 있는 파일만 정리용으로 간주되며 DDEVCF_PRIVATE_LASTACCESS 플래그가 설정되므로 해당 파일에서 14일 이상 액세스되지 않은 파일만 고려됩니다. 정리 후보를 찾지 못한 경우 처리기가 목록에 표시되지 않도록 DDEVCF_DONTSHOWIFZERO 플래그도 설정됩니다.

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