在Windows 7中调试shell扩展

Cod*_*ake 13 c++ debugging shell-extensions windows-7

我正在尝试使用Visual C++ 2008在Windows 7中调试shell扩展(IContextMenu).我在注册表中设置了DesktopProcess = 1并将主机应用程序设置为explorer.exe.但是当我启动调试器时,它会启动explorer.exe然后从进程中分离.不调用shell扩展的DllMain.

在Windows XP + Visual C++ 2008中,在调试器中启动的相同代码具有完全相同的设置,没有任何问题.

有任何想法如何在Win7中调试shell扩展?

Ste*_*nev 9

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

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

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

  • 单击任务栏并按Alt-F4 - 这将打开关闭对话框
  • 按Ctrl-Alt-Shift-Escape - 此组合将关闭资源管理器.
  • 使用Alt-Tab返回到Visual Studio并按F5 - 资源管理器现在将从一开始就使用VS调试器启动它.
  • 完成后,只需停止调试器会话即可.这将终止探测器的已调试实例,并且还将自动启动它的正常实例.这也将解锁shell扩展DLL,以便您可以再次构建它.

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


sno*_*ude 8

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