使用 Shell 进行调试
本主题说明如何调试 Shell 和命名空间扩展 DLL。
在调试器下运行 Shell
若要调试扩展,需要从调试器运行 Shell。 执行以下步骤:
将扩展的项目加载到调试器中,但不运行它。
关闭 Shell。
- 对于 Windows Vista 及更高版本:
- 显示“ 开始 ”菜单。
- 按 Ctrl+Shift,然后右键单击 “开始” 菜单右半部分的背景。
- 在出现的菜单中,选择“ 退出资源管理器”。
- 对于 Windows XP:
- 从“ 开始 ”菜单中,选择 “关闭”。
- 按 Ctrl+Alt+SHIFT,然后在“关闭 Windows”对话框中单击“否”。
Shell 现已关闭,但所有其他应用程序仍在运行,包括调试器。
- 对于 Windows Vista 及更高版本:
将调试器设置为使用 Windows 目录中Explorer.exe运行扩展 DLL。
从调试器运行项目。 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