Подтвердить что ты не робот

Отладка расширения оболочки в Windows 7

Я пытаюсь отлаживать расширение оболочки (IContextMenu) в Windows 7 с Visual С++ 2008. Я установил DesktopProcess = 1 в реестр и установил приложение-приложение для explorer.exe. Но когда я запускаю отладчик, он запускает explorer.exe, а затем отключается от процесса. DllMain расширения оболочки не вызывается.

Тот же код с точно такими же настройками, запущенными в отладчике, без каких-либо проблем в Windows XP + Visual С++ 2008.

Любые мысли о том, как отлаживать расширение оболочки в Win7?

4b9b3361

Ответ 1

Попробуйте запустить explorer и THEN, добавив к нему отладчик.

Ответ 2

Следующее должно работать с любой версией Windows.

Сначала подготовьте - установите стартовую программу проекта расширения оболочки c:\windows\explorer.exe и установите ее как проект запуска.

Затем, когда вы хотите отладить расширение оболочки, выполните следующие шаги:

  • Нажмите на панель задач и нажмите Alt-F4 - это вызовет диалог закрытия
  • Нажмите Ctrl-Alt-Shift-Escape - эта комбинация закроет проводник.
  • С помощью Alt-Tab вернитесь в Visual Studio и нажмите F5 - проводник будет запущен с отладчиком VS, прикрепленным к нему с самого начала.
  • По завершении просто отмените сеанс отладчика. Это убьет отлаженный экземпляр проводника и автоматически запустит его обычный экземпляр. Это также разблокирует DLL-расширение оболочки, чтобы вы могли снова создать его.

Я нашел, что этот подход является самым быстрым для быстрого повторения цикла цикла сборки кода при разработке расширений оболочки.

Предостережение на Vista и 7 - обязательно запустите Visual Studio, которую вы используете для отладки в режиме без администратора (без повышения), чтобы проводник запускался в обычном не повышенном режиме.

Ответ 3

Вы можете попробовать поставить вызов DebugBreak() в свой код. Это должно запустить отладчик "точно в срок" при вызове и дать вам представление о том, что происходит.

Ответ 4

Вы должны взглянуть на gflags.exe, часть стандартных инструментов отладки sdk. Он получил все параметры, необходимые для настройки (глобальных) флагов для любого процесса запуска/обслуживания/кучи/пула-tagging/stacktrace's-on-alloc и т.д....

Ответ 5

Отладка Explorer.exe обычно является избыточной для расширений, работающих в представлении оболочки.

Я лично использую небольшое приложение, которое я сделал, чтобы разместить экземпляр IExplorerBrowser, аналогичный этот пример. Если ваш элемент IContextMenu не является элементом по умолчанию, вы можете просто использовать Notepad.exe и его диалог с открытым файлом...