Отладка с помощью шелла
В этом разделе объясняется, как отлаживать DLL-расширения оболочки и пространства имен.
- запуск оболочки под отладчиком
- Запуск и тестирование расширений оболочки
- выполнение выгрузки библиотеки DLL
Запуск оболочки под отладчиком
Чтобы выполнить отладку расширения, необходимо запустить командную оболочку через отладчик. Выполните следующие действия.
Загрузите проект расширения в отладчик, но не запускайте его.
Завершите работу оболочки.
- Для Windows Vista и более поздних версий:
- Отображение меню "Пуск".
- Нажмите клавиши CTRL+SHIFT и щелкните правой кнопкой мыши по фону правой части меню «Пуск».
- В появившемся меню выберите Выход из проводника.
- Для Windows XP:
- В меню "Пуск" выберите Завершить работу.
- Нажмите клавиши CTRL+ALT+SHIFT и нажмите кнопку Нет в диалоговом окне Завершение работы Windows.
Оболочка теперь завершает работу, но все остальные приложения по-прежнему выполняются, включая отладчик.
- Для Windows Vista и более поздних версий:
Настройте отладчик для запуска библиотеки расширения DLL с Explorer.exe из каталога Windows .
Запустите проект из отладчика. Оболочка запускается как обычно, но отладчик будет присоединен к процессу оболочки.
Запуск и тестирование расширений оболочки
Вы можете запускать и тестировать расширения в отдельном процессе проводника Windows, чтобы избежать остановки и перезапуска рабочего стола и панели задач. Рабочий стол и панель задач по-прежнему можно использовать при запуске и тестировании расширений.
Чтобы включить эту функцию, добавьте следующую REG_DWORD запись в реестр.
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Explorer
DesktopProcess = 1
Чтобы эта запись вступила в силу, необходимо выйти из системы и снова войти. Этот параметр приводит к созданию окон рабочего стола и панели задач в одном процессе Explorer.exe, а все остальные окна Проводника и папок — в другом процессе Explorer.exe.
Помимо удобства выполнения и тестирования расширений, этот параметр также делает рабочий стол более надежным, так как он относится к расширениям оболочки. Многие такие расширения (например, расширения контекстного меню) будут загружены в процесс Explorer.exe nondesktop. Если этот процесс завершится, рабочий стол и панель задач не будут затронуты, а следующее окно проводника или папки повторно создаст завершенный процесс.
Выгрузка библиотеки DLL
Оболочка автоматически выгружает любую библиотеку DLL, если ее количество использования равно нулю, но только после того, как библиотека DLL не использовалась в течение определенного периода времени. Этот неактивный период может быть иногда неприемлемо долгим, особенно при отладке расширения Shell DLL. Вы можете сократить неактивный период, добавив в реестр следующие сведения.
HKEY_LOCAL_MACHINE
Software
Microsoft
Windows
CurrentVersion
Explorer
AlwaysUnloadDll