디스크 정리 처리기 만들기

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

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

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

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

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

사용자가 파일 시스템을 수동으로 클린 기대하는 것은 좋은 솔루션이 아닙니다. 사용자는 많은 파일이 있는 위치 또는 안전하게 제거할 수 있는 파일을 인식하는 방법을 모를 수 있습니다. 또한 사용자가 필수 파일을 삭제할 위험이 있습니다.

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

Windows 디스크 정리 유틸리티

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

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

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

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

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

클린 위쪽 대화 상자의 스크린샷

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

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

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

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

구현 기본 사항

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

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

  • 처리기 개체를 초기화합니다.
  • 디스크를 스캔하여 해제할 수 있는 디스크 공간을 확인합니다.
  • UI를 표시하여 클린 파일에 대한 사용자 피드백을 가져옵니다. (선택 사항)
  • 정리를 수행합니다.
  • Shut down.

디스크 정리 관리자가 이러한 작업을 관리할 수 있도록 하려면 처리기는 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만 사용합니다. 디스크 정리 관리자는 처리기의 레지스트리 키 및 정리할 디스크 볼륨과 같은 정보를 메서드에 전달합니다.

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

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

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

  • EVCF_SETTINGSMODE

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

  • EVCF_OUTOFDISKSPACE

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

나머지 플래그는 디스크 정리 처리기에 의해 설정되고 디스크 정리 관리자로 반환됩니다. 자세한 내용은 IEmptyVolumeCache::Initialize 및 IEmptyVolumeCache2::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 반환합니다.

ShowProperties

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

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

제거

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

비활성화

디스크 정리 관리자가 종료를 준비할 때 Deactivate 메서드가 호출됩니다. 처리기는 필요한 정리 작업을 수행하고 반환해야 합니다. 처리기를 다시 실행하지 않으려면 초기화 메서드의 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(클래스 식별자)를 지정하는 기본값만 있으면 다른 모든 값은 선택 사항입니다.

Type 의미
기본값 REG_SZ HKEY_CLASSES_ROOT CLSID\ 등록된 처리기의CLSID입니다.
AdvancedButtonText REG_SZ 사용자가 클릭하여 처리기의 UI를 표시할 수 있는 선택적 단추에 대한 텍스트입니다. & 문자를 문자 앞에 배치하여 단추의 바로 가기 키를 할당할 수 있습니다. AdvancedButtonText 값은 IEmptyVolumeCache2::InitializeEx를 노출하는 처리기에서 무시됩니다.
CleanupString REG_SZ 실행 파일 및 선택적 명령줄 매개 변수를 지정하는 명령줄입니다. 이 명령줄은 디스크 정리가 완료될 때 실행됩니다.
Csidl REG_DWORD 파일 검색에 포함할 특수 폴더에 대한 시스템 독립적 식별자입니다. 이 값은 CSIDL_LOCAL_APPDATA 대신 instance 0x0000001c 숫자 값으로 입력해야 합니다. 가능한 값 목록은 CSIDL을 참조하세요. 단일 값만 사용할 수 있습니다.
폴더 값을 지정하면 검색 경로를 작성하기 위해 CSIDL 값으로 표시된 위치가 해당 정보 앞에 추가됩니다. instance 경우 다음 시나리오를 고려하세요.
  • CSIDL 값은 0x0000000d(CSIDL_MYMUSIC)로 지정됩니다.
  • 내 음악 폴더는 C:\Documents and Settings\username\My Music에 있습니다.
  • 폴더 값에 "Jazz\Singers"가 포함됩니다.
이 시나리오의 결과는 디스크 정리 처리기가 C:\Documents and Settings\username\My Music\Jazz\Singers 폴더를 검색하기 위한 것입니다. 폴더 값 앞에 오는 슬래시가 없는 경우 추가됩니다.
Description REG_SZ 처리기의 이름을 선택하면 디스크 정리 관리자의 목록 상자 아래에 설명 텍스트가 표시됩니다. 여기서는 처리기가 수행하는 작업, 처리기 자체와 관련된 파일 및 사용자에게 설명된 기타 정보를 설명할 수 있습니다. IEmptyVolumeCache2::InitializeEx가 처리기에서 노출되지 않는 경우 메서드가 호출될 때 ppwszDescription 매개 변수에 대체 문자열을 지정하여 처리기의 IEmptyVolumeCache::Initialize 메서드를 통해 이 텍스트를 재정의할 수 있습니다.
표시 REG_SZ 디스크 정리 관리자의 목록 상자에 표시할 처리기의 이름입니다. IEmptyVolumeCache2::InitializeEx가 처리기에서 노출되지 않는 경우 메서드가 호출될 때 ppwszDisplayName 매개 변수에 대체 문자열을 지정하여 처리기의 IEmptyVolumeCache::Initialize 메서드를 통해 이 텍스트를 재정의할 수 있습니다.
FileList 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). IEmptyVolumeCache::Initialize 또는 IEmptyVolumeCache2::InitializeEx를 통해 EVCF_OUTOFDISKSPACE 플래그를 설정하는 디스크 정리 관리자에 의해 결정된 사용 가능한 디스크 공간이 중요한 값보다 낮은 경우에만 이 처리기를 실행합니다.
  • 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 문자열을 통해 제공할 수 있습니다. 그러나 이러한 옵션을 제외하면 검색할 드라이브를 폴더 이름에 지정해야 합니다. ?: 를 사용하여 현재 드라이브의 폴더를 검색합니다.
IconPath REG_SZ 또는 REG_EXPAND_SZ 처리기와 관련하여 사용할 아이콘을 가져올 리소스의 경로입니다.
LastAccess REG_DWORD 또는 REG_BINARY 파일이 마지막으로 액세스되었거나 해당 파일 또는 디렉터리가 정리를 위해 고려되도록 디렉터리를 만든 이후 경과해야 하는 일 수입니다.
우선 순위 REG_DWORD 또는 REG_BINARY 처리기가 다른 처리기와 관련하여 실행되는 순서를 결정합니다. 숫자가 높을수록 처리기가 실행되는 프로세스의 앞부분입니다. 허용되는 숫자가 정의된 범위가 없습니다.
PropertyBag REG_SZ 표시 이름, 설명 및 단추 텍스트에 대한 지역화된 텍스트를 제공하는 데 사용되는 리소스의 CLSID입니다. 이 리소스는 처리기가 IEmptyVolumeCache를 구현하지 않고 처리기가 Microsoft Windows NT 또는 Windows XP에서 실행되는 상황에서 유용합니다.
디스크 정리 관리자는 먼저 IEmptyVolumeCache2 가 구현될 때와 마찬가지로 처리기의 초기화 루틴이 해당 문자열을 반환했는지 여부를 확인합니다. 실패하면 관리자는 다음으로 이 값에 명명된 속성 모음으로 전환합니다. 제공되지 않은 경우 레지스트리에서 텍스트를 검색합니다.
StateFlags REG_DWORD 명령줄에서 디스크 정리 관리자의 실행 파일 Cleanmgr.exe 실행하면 정리 프로필을 선언할 수 있습니다. 이러한 프로필은 사용 가능한 처리기의 하위 집합으로 구성되며 고유한 숫자 레이블이 제공됩니다. 이렇게 하면 서로 다른 시간에 다양한 처리기 집합의 실행을 자동화할 수 있습니다.
명령줄 "cleanmgr.exe /sageset:nnnn"은 nnnn 이 고유한 숫자 레이블인 경우 해당 프로필에 포함할 처리기를 선택할 수 있는 UI를 표시합니다. 프로필을 정의할 뿐만 아니라 sageset 매개 변수는 StateFlagsnnnn이라는 값도 씁니다. 여기서 nnnn 은 매개 변수에서 사용한 레이블이며 VolumeCaches 아래의 모든 하위 키에 씁니다. 이러한 항목에는 두 가지 가능한 데이터 값이 있습니다.
  • 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 이상에서는 IEmptyVolumeCache::Initialize 전에 항상 IEmptyVolumeCache2::InitializeEx 를 호출하려고 시도 합니다. 시스템은 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}