在前两篇教程中,我们已经学会了如何在资源管理器的右键菜单中增加自己的菜单项,及如何将菜单分组为子菜单。在学习过程中,读者可能注意到,在VC中编译成功后,此时我们的扩展DLL已自动注册到系统中,此时Windows资源管理器将自动加载此文件,之后重新编译时,会提示该DLL文件正在被使用,无法覆盖,导致编译失败。本文将介绍如何解决这一问题。
首先,需修改如下注册表项:
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Explorer/AlwaysUnloadDLL
将该项的默认值修改为"1",该值指示资源管理器更频繁的释放不再使用的扩展DLL。
此外,在NT版的Windows中,还需在
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer
下创建一个名为DesktopProcess、类型为DWORD、值为1的参数。这个参数将每一个新打开的资源管理器运行在独立的进程中,这样我们就可以在项目设置中将我们的扩增DLL的调试进程设为c:/windows/explorer.exe,运行调试器进行调试。
如此设置后,我们如果发现因 资源管理器载入了扩展DLL而导致无法编译,可以将此DLL反注册,然后关闭资源管理器窗口,过一会儿(最多2到3分钟)就可以编译覆盖了。如果这样还不行,则只能反注册扩展DLL后,注销当前用户,然后重新登录,保证资源管理器不载入我们的DLL。
7809

被折叠的 条评论
为什么被折叠?



