Windows自带的记事本打开一些简单的短小文本不错,但自带的这个记事本相应的也很残.比如查找替换功能,比如编码格式兼容问题…
为了使记事本使用更方便,我们有不少替代方案,比如 notepad2,notepad++,ultraedit…
个人比较喜欢notepad2-mod,替换分两种,一种直接改名为notepad.exe替换文件,另一种则是使用映像劫持,将名称为notepad.exe的进程劫持到我们指定的程序,以此实现启动记事本时打开我们要的notepad2.exe.
替换文件Windows自带的notepad.exe在系统中有2~3份,64位系统则翻倍,其中必然有一份是源头,当系统发现Windows和system32目录下的notepad.exe不匹配时,则自带将其恢复.
对于xp或2003版本系统,用以下批处理即可完成:
12
3
4
5
6
7
8
9
10
rem 把notepad2.exe和批处理放同一目录
copy notepad2.exe C:Windowssystem32dllcachenotepad.exe /y
copy notepad2.exe c:Windowsnotepad.exe /y
copy notepad2.exe c:Windowssystem32notepad.exe /y
rem notepad.ini是notepad2.exe的个性配置文件,如不需要则忽略
copy notepad.ini c:Windowsnotepad.ini /y
copy notepad.ini c:Windowssystem32notepad.ini /y
echo 替换完成
pause
如果系统文件保护功能没有关闭,替换后会有系统文件更改提示,点保留更改即可.
Windows Vista之后的系统版本系统权限控制大大加强,所以不能像Windows xp下那样直接替换文件,我们需要额外设置些系统权限才可以.
我这里装的是win8.1,权限设置和win7等是一样的,必须先得取得所有权,才可以更改用户权限.
文件夹权限设定完成后,将我们需要的notepad2.exe改名为notepad.exe,复制替换系统文件,如果想以后恢复,则建议将系统该文件改名备份处理.
当提示目标文件夹访问被拒绝时,点击”继续”按钮才可以.
此时,我们已经将文件替换完成,其他地方剩下的文件以此类推.
替换完成后,当我们打开txt或原notepad.exe关联的文件时,将调用新的notepad.exe打开,编辑网页,查看ini啥的还带格式,语法高亮,简直不是舒服一点…
notepad2有个对应名称的配置,可以实现字体设置,语法主题设置等个性化配置,每次notepad2退出或F7时会保存在同目录的ini文件中.同样的,因为系统目录权限的问题,notepad2无法保存该配置,如果需要则可以在其他地方设置保存后将其复制到system32和Windows目录,因为之前notepad2已改名为notepad.exe,所以ini名称应该为notepad.ini.
至此,手工替换系统文件实现notepad2替代自带记事本就完成了.
当然,如果需要大量部署,要么自己封装系统的时候就替换好,要么可以尝试下批处理,从网上找了一段,未验证是否可行:
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
rem 取得所有权
takeown /f %systemroot%notepad.exe
takeown /f %systemroot%system32notepad.exe
taskkill /f /im notepad.exe 2>nul
rem 备份原文件
ren %windir%notepad.exe notepad.exe.bak
icacls %windir%notepad.exe /grant %username%:f /t
icacls %windir%system32notepad.exe /grant %username%:f /t
copy /y notepad.exe %windir%
copy /y notepad.exe %windir%system32
echo 替换完成
notepad
此批处理只考虑了两个目标notepad.exe,且只用于32位版本系统,自己稍加发挥修改下吧.
映像劫持其实notepad2官方提供的安装包采用的就是映像劫持方式,这种方式的优点是不用处理复杂的系统权限,也不对系统文件造成破坏,简单方便,推荐使用.
手工修改注册表实现映像劫持注册表如下:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options
这个注册表项可以实现进程名劫持,官方注册表如下:
2
3
4
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionsnotepad.exe]
"Debugger"=""C:\Program Files\Notepad2\Notepad2.exe" /z"