我正在尝试使用Visual C ++ 2008在Windows 7中调试shell扩展(IContextMenu)。我在注册表中设置了DesktopProcess = 1并将主机应用程序设置为explorer.exe。但是当我启动调试器时,它会启动explorer.exe然后从进程中分离。不调用shell扩展的DllMain。
在调试器中启动完全相同设置的相同代码,在Windows XP + Visual C ++ 2008中没有任何问题。
如何在Win7中调试shell扩展?
答案 0 :(得分:9)
我发现了一个很好的工作流程,我认为这是在开发shell扩展时快速迭代代码构建测试周期的最快方法。以下内容适用于任何Windows版本。
首先准备 - 将shell扩展项目的启动程序设置为c:\ windows \ explorer.exe,并将其设置为启动项目。
然后,每当您想要调试shell扩展时,请执行以下步骤:
Vista和7上的警告 - 确保运行用于在非管理员模式下调试的Visual Studio(非提升),以便以通常的非提升模式启动资源管理器。
答案 1 :(得分:8)
尝试启动资源管理器,然后将调试器附加到它。
答案 2 :(得分:2)
您可以尝试在代码中调用DebugBreak()。这应该在调用时启动实时调试器,并让您了解正在发生的事情。
答案 3 :(得分:0)
你应该看看gflags.exe,它是标准调试工具sdk的一部分。它具有为任何进程启动/服务/堆/池标记/堆栈跟踪分配等配置(全局)标志所需的所有选项...
答案 4 :(得分:0)
调试Explorer.exe对于在shell视图中运行的扩展通常是过度的。
我个人使用了一个小应用程序来托管IExplorerBrowser与[{3}}类似的实例。如果您的IContextMenu项目不是默认项目,那么您可以使用Notepad.exe及其打开文件对话框...