shell扩展的调试问题
2007-03-22 13:30
260 查看
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 文件,右击即可。
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 文件,右击即可。
相关文章推荐
- 如何调试Windows外壳扩展程序(Shell Extension)
- PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题
- reverse shellcode调试问题问答
- shell脚本调试打印日志问题
- 关于shell 的一些调试问题
- shell命令的执行顺序问题·拓扑排序的扩展
- shell命令解析中扩展与重定向顺序问题 .
- vs2005下Windows Shell扩展编程完全指南例子一中的问题解决
- shell脚本中大括号的扩展在变量中的问题
- shell命令解析中扩展与重定向顺序问题
- 如何编程实现扩展右键菜单之三:调试Shell扩展DLL
- 调试国密算法验签遇到的问题
- shell读文件时无法读入tab的问题
- shell读文件时无法读入tab的问题
- <Opencv for Android 调试>加载XML模型,使用SVM.predict出现的NullPointerException问题
- gdb调试时的问题Missing separate debuginfos, use: debuginfo-install glibc-XXX
- [RK3288][Android6.0] 调试笔记 --- Camera没有权限打开问题
- Python numpy数组扩展效率问题
- linux及shell常用命令及遇到的问题集合
- 待调试 约瑟夫问题