使用 Shell 进行调试

本主题说明如何调试 Shell 和命名空间扩展 DLL。

在调试器下运行 Shell

若要调试扩展,需要从调试器运行 Shell。 执行以下步骤:

  1. 将扩展的项目加载到调试器中,但不运行它。

  2. 关闭 Shell。

    • 对于 Windows Vista 及更高版本:
      1. 显示“ 开始 ”菜单。
      2. 按 Ctrl+Shift,然后右键单击 “开始” 菜单右半部分的背景。
      3. 在出现的菜单中,选择“ 退出资源管理器”。
    • 对于 Windows XP:
      1. 从“ 开始 ”菜单中,选择 “关闭”。
      2. 按 Ctrl+Alt+SHIFT,然后在“关闭 Windows”对话框中单击“”。

    Shell 现已关闭,但所有其他应用程序仍在运行,包括调试器。

  3. 将调试器设置为使用 Windows 目录中Explorer.exe运行扩展 DLL。

  4. 从调试器运行项目。 Shell 将照常启动,但调试器将附加到 Shell 的进程。

运行和测试 Shell 扩展

可以在单独的 Windows 资源管理器进程中运行和测试扩展,以避免停止和重启桌面和任务栏。 运行和测试扩展时,仍可使用桌面和任务栏。

若要启用此功能,请将以下REG_DWORD项添加到注册表中。

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  DesktopProcess = 1

要使此项生效,必须注销并重新登录。 此设置会导致桌面和任务栏窗口在一个Explorer.exe进程中创建,并在其他Explorer.exe进程中打开所有其他资源管理器和文件夹窗口。

除了使扩展的运行和测试更加方便外,此设置还使桌面更可靠,因为它与 Shell 扩展相关。 许多此类扩展 (快捷菜单扩展,例如,) 将加载到非桌面Explorer.exe进程中。 如果此过程终止,桌面和任务栏将不受影响,下一个资源管理器或文件夹窗口将重新创建终止的进程。

卸载 DLL

当使用计数为零时,Shell 会自动卸载任何 DLL,但仅在 DLL 一段时间未使用之后。 此非活动时段有时可能令人无法接受,尤其是在调试 Shell 扩展 DLL 时。 可以通过将以下信息添加到注册表来缩短非活动期限。

HKEY_LOCAL_MACHINE
   Software
      Microsoft
         Windows
            CurrentVersion
               Explorer
                  AlwaysUnloadDll