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