在Windows7中调试shell扩展 我尝试用Visual C++ 2008在Windows 7中调试shell扩展(ICONTRONTURE)。我已在注册表中设置DesktopProcess=1,并将host app设置为explorer.exe。但当我启动调试器时,它会启动explorer.exe,然后与进程分离。未调用shell扩展的DllMain < >在调试程序中启动的代码完全相同,在Windows XP+Visual C++ 2008中没有任何问题。

在Windows7中调试shell扩展 我尝试用Visual C++ 2008在Windows 7中调试shell扩展(ICONTRONTURE)。我已在注册表中设置DesktopProcess=1,并将host app设置为explorer.exe。但当我启动调试器时,它会启动explorer.exe,然后与进程分离。未调用shell扩展的DllMain < >在调试程序中启动的代码完全相同,在Windows XP+Visual C++ 2008中没有任何问题。,c++,debugging,windows-7,shell-extensions,C++,Debugging,Windows 7,Shell Extensions,如何在Win7中调试shell扩展?尝试启动资源管理器,然后将调试器附加到它。您可以尝试在代码中加入DebugBreak()调用。这将在调用时启动实时调试器,并让您了解正在发生的事情。您应该看看gflags.exe,它是标准调试工具sdk的一部分。它提供了为任何进程启动/服务/堆/池标记/stacktrace的on-allocation等配置(全局)标志所需的所有选项。我发现了一个很好的工作流,我认为这是在开发shell扩展时快速迭代代码构建测试周期的最快方法。以下内容适用于任何Windows版

如何在Win7中调试shell扩展?

尝试启动资源管理器,然后将调试器附加到它。

您可以尝试在代码中加入DebugBreak()调用。这将在调用时启动实时调试器,并让您了解正在发生的事情。

您应该看看gflags.exe,它是标准调试工具sdk的一部分。它提供了为任何进程启动/服务/堆/池标记/stacktrace的on-allocation等配置(全局)标志所需的所有选项。

我发现了一个很好的工作流,我认为这是在开发shell扩展时快速迭代代码构建测试周期的最快方法。以下内容适用于任何Windows版本

首先准备-将shell扩展项目的启动程序设置为c:\windows\explorer.exe,并将其设置为启动项目

然后,每当您想要调试shell扩展时,请执行以下步骤:

  • 单击任务栏并按Alt-F4-这将打开关闭对话框
  • 按Ctrl-Alt-Shift-Escape-此组合将关闭资源管理器
  • 使用Alt Tab返回VisualStudio并按F5-浏览器现在将启动,并从一开始就将VS调试器连接到它
  • 完成后,只需停止调试器会话。这将杀死已调试的explorer实例,并自动启动它的正常实例。这也将解锁外壳扩展DLL,以便您可以再次构建它

Vista和7上的警告-请确保在非管理员模式(非提升模式)下运行用于调试的Visual Studio,以便在其通常的非提升模式下启动资源管理器。

对于在shell视图中运行的扩展,调试explorer.exe通常会过多


我个人使用了我制作的一个小应用程序,它承载了一个类似的实例。如果您的IContext菜单项不是默认项,那么您可以使用Notepad.exe及其“打开文件”对话框…

刚刚尝试过。它导致explorer.exe以循环方式重新启动,我几乎不得不强制重新启动计算机