Ответ 1
Попробуйте запустить explorer и THEN, добавив к нему отладчик.
Я пытаюсь отлаживать расширение оболочки (IContextMenu) в Windows 7 с Visual С++ 2008. Я установил DesktopProcess = 1 в реестр и установил приложение-приложение для explorer.exe. Но когда я запускаю отладчик, он запускает explorer.exe, а затем отключается от процесса. DllMain расширения оболочки не вызывается.
Тот же код с точно такими же настройками, запущенными в отладчике, без каких-либо проблем в Windows XP + Visual С++ 2008.
Любые мысли о том, как отлаживать расширение оболочки в Win7?
Попробуйте запустить explorer и THEN, добавив к нему отладчик.
Следующее должно работать с любой версией Windows.
Сначала подготовьте - установите стартовую программу проекта расширения оболочки c:\windows\explorer.exe и установите ее как проект запуска.
Затем, когда вы хотите отладить расширение оболочки, выполните следующие шаги:
Я нашел, что этот подход является самым быстрым для быстрого повторения цикла цикла сборки кода при разработке расширений оболочки.
Предостережение на Vista и 7 - обязательно запустите Visual Studio, которую вы используете для отладки в режиме без администратора (без повышения), чтобы проводник запускался в обычном не повышенном режиме.
Вы можете попробовать поставить вызов DebugBreak() в свой код. Это должно запустить отладчик "точно в срок" при вызове и дать вам представление о том, что происходит.
Вы должны взглянуть на gflags.exe, часть стандартных инструментов отладки sdk. Он получил все параметры, необходимые для настройки (глобальных) флагов для любого процесса запуска/обслуживания/кучи/пула-tagging/stacktrace's-on-alloc и т.д....
Отладка Explorer.exe обычно является избыточной для расширений, работающих в представлении оболочки.
Я лично использую небольшое приложение, которое я сделал, чтобы разместить экземпляр IExplorerBrowser, аналогичный этот пример. Если ваш элемент IContextMenu не является элементом по умолчанию, вы можете просто использовать Notepad.exe и его диалог с открытым файлом...