셸을 사용하여 디버깅
이 항목에서는 셸 및 네임스페이스 확장 DLL을 디버그하는 방법을 설명합니다.
- 디버거에서 셸을 실행하기
- 셸 확장 실행 및 테스트
- DLL 언로드
디버거에서 셸 실행
확장을 디버그하려면 디버거에서 셸을 실행해야 합니다. 다음 단계를 수행합니다.
확장의 프로젝트를 디버거에 로드하지만 실행하지는 않습니다.
셸을 종료합니다.
- Windows Vista 이상:
- 시작 메뉴를 표시합니다.
- Ctrl+Shift를 누르고 시작 메뉴의 오른쪽 절반 배경을 마우스 오른쪽 단추로 클릭합니다.
- 표시되는 메뉴에서 탐색기 종료선택합니다.
- Windows XP의 경우:
- 시작 메뉴에서 종료를 선택합니다.
- Ctrl+Alt+Shift를 누른 상태에서 Windows 종료 대화 상자에서 아니요를 클릭합니다.
이제 셸이 종료되었지만 디버거를 포함한 다른 모든 애플리케이션이 여전히 실행 중입니다.
- Windows Vista 이상:
Windows 디렉터리의 Explorer.exe 사용하여 확장 DLL을 실행하도록 디버거를 설정합니다.
디버거에서 프로젝트를 실행합니다. 셸은 평소와 같이 시작되지만 디버거는 셸의 프로세스에 연결됩니다.
셸 확장 실행 및 테스트
별도의 Windows 탐색기 프로세스에서 확장을 실행하고 테스트하여 데스크톱 및 작업 표시줄을 중지하고 다시 시작하지 않도록 할 수 있습니다. 확장을 실행하고 테스트하는 동안 데스크톱 및 작업 표시줄을 계속 사용할 수 있습니다.
이 기능을 사용하려면 레지스트리에 다음 REG_DWORD 항목을 추가합니다.
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer
DesktopProcess = 1
이 항목이 적용되려면 로그오프하고 다시 로그온해야 합니다. 이 설정을 사용하면 데스크톱 및 작업 표시줄 창이 하나의 Explorer.exe 프로세스에서 만들어지고 다른 모든 탐색기 및 폴더 창이 다른 Explorer.exe 프로세스에서 열립니다.
이 설정은 확장의 실행 및 테스트를 보다 편리하게 만드는 것 외에도 셸 확장과 관련된 데스크톱을 더욱 강력하게 만듭니다. 이러한 확장(예: 바로 가기 메뉴 확장)은 비데스크톱 Explorer.exe 프로세스에 로드됩니다. 이 프로세스가 종료되면 바탕 화면 및 작업 표시줄은 영향을 받지 않으며 다음 탐색기 또는 폴더 창은 종료된 프로세스를 다시 만듭니다.
DLL 언로드
셸은 사용 횟수가 0이지만 DLL이 일정 기간 동안 사용되지 않은 후에만 DLL을 자동으로 언로드합니다. 이 비활성 기간은 특히 셸 확장 DLL이 디버그되는 경우 허용할 수 없는 긴 시간이 될 수 있습니다. 레지스트리에 다음 정보를 추가하여 비활성 기간을 단축할 수 있습니다.
HKEY_LOCAL_MACHINE
Software
Microsoft
Windows
CurrentVersion
Explorer
AlwaysUnloadDll