shell扩展的调试问题

1、Shell 扩展是被 Explorer 调用起来的,所以,首先要把你的工程的调式进程设置为 Explorer.exe。

2、由于当 Shell 扩展被 Explorer 调用后, 它会在内存中呆上一段时间, 这会使你无法重新编译并生成Shell 扩展 DLL 文件。

对于 Windows 9x,要让 Explorer 更迅速地卸载 Shell 扩展执行文件,需要创建如下注册表项:
HKLM/Software/Microsoft/Windows/CurrentVersion/Explorer/AlwaysUnloadDLL
并将其值设为 "1"。

而在 Windows NT/2000上, 你可以找到如下键:
HKCU/Software/Microsoft/Windows/CurrentVersion/Explorer
并创建一个名为 DesktopProcess 的 DWORD 值,将该值设置为 1。这会使桌面和任务栏运行在一个进程中, 而其他每一个 Explorer 窗口都运行在它各自的一个进程内. 也就是说,你可以在单个的 Explorer 窗口内进行调试, 而后只要你关闭该窗口,你的 DLL 就会被马上卸载, 这就避免了因为 DLL 正被 Windows 使用而无法替换更新。而如果不幸出现这种情况,你就不得不注销登录后再重新登录进 Windows 从而强制卸载使用中的 Shell 扩展 DLL。

3、现在,正常在 DLL 工程中设置断点,点击调试按钮,待到 Explorer 窗口出现时,找到某个 TXT 文件,右击即可。 

你可能感兴趣的:(VC++)