notepad2是一个相当优秀的轻量级文本编辑器,开源软件,具有很多特色功能,如代码高亮、编码转换、行号显示、多步ctrl z等,是不可多得的记事本替代方案。
开始使用notepad2后,我是在total commander里设置f3和f4来调用,但在tc之外,就不是太好操作了。直接替换notepad.exe的方式不太喜欢,而且配置文件保存在c盘,不利于便携,于是我就手动更改txt、bat、nsi、ini、reg等格式的文件关联,但总归不方便。
后来无意间发现官方的替代默认记事本的方法,才是豁然开朗、相见恨晚,它是用image file execution options的方式来实现替换,image file execution options就是映像劫持技术,通过此种方式替换记事本,非常地绿色环保。
image file execution options是createprocess函数中的一个功能,即在可执行程序运行时,windows会先检测对应ifeo中的debugger值,如果存在这个参数的话,就运行这个参数中指定的程序,好像是程序调试之用,具体可以见这里。
大体原理是这样的,修改image file execution options键值后,在有notepad.exe运行请求的时候,就欺骗系统转而运行notepad2.exe:
- 创建如下注册表项:hklmsoftwaremicrosoftwindows ntcurrentversionimage file execution optionsnotepad.exe,如果无法修改,需要先右键取得权限;
- 在notepad.exe注册表项中,创建名为debugger的字符串值(reg_sz);
- 修改字符串值debugger的数据为notepad2.exe的完整路径,最后以 /z参数结尾。
如:"d:program filesnotepad2notepad2.exe" /z
或直接创建如下注册表文件,然后导入:
windows registry editor version 5.00
[hkey_local_machinesoftwaremicrosoftwindows ntcurrentversionimage file execution optionsnotepad.exe]
"debugger"=""d:program filesnotepad2notepad2.exe" /z"
- notepad2原版:http://www.flos-freeware.ch/notepad2.html
- notepad2-mod:http://code.google.com/p/notepad2-mod/
- replacing windows notepad with notepad2:
http://www.flos-freeware.ch/doc/notepad2-replacement.html
notepad2-mod是我正在使用的修改版、更新很及时,支持代码折叠、nsis、inno、ahk语法高亮等,由于不支持多标签,所以我用notepad2-mod emeditor组合。