|
|
正如我所说的,打开运行对话框的时候是要到用户的主目录去。
基本上流程是:
1.获取HOMEDRIVE环境变量
2.获取HOMEPATH环境变量
3.Append连接字符串
4.检测路径是否合法
5.1.成功则运行对话框的工作路径为用户的主路径
5.2.不成功则用最后EXPLORER选中的目录(这个是我们要的效果)
知道了原理,我们要5.2的效果,那么就要1-4中出问题就好了。
尝试1:
添加HOMEDRIVE环境变量指向一个错误的位置
结果失败,系统会恢复HOMEDRIVE和HOMEPATH这2个环境变量,
而且强改感觉也不太好吧。
尝试2:
注册表对HOMEDRIVE和HOMEPATH的键值设置权限不让读取。。。
结果失败,系统会获取这个权限并读取。。。
好吧,只能暴力了:
在1-4步explorer.exe中处理的代码进行修改,比如判断是不是合法的路径检验
让它一直认为不合法。
成功
但是因为大家的版本不同,字节位置不好定位,所以。。。
用UE等工具打开explorer.exe,大概在20580H处可以看到H.O.M.E.D.R.I.V.E字样(Unicode)
这里改成不存在的环境变量就好了,比如我改成HOOKDRIVE,在上面有HOMEPATH
也可以一并修改为HOOKPATH(其实改了一个就可以了,改这里有另外一个应用)
保存替换,注销或者结束explorer再开就好了。
应用方法有2种:
1.就这样什么也不动,就是达到最初的目的,运行cmd等命令的初始路径为最后激活的
文件夹。(桌面,我的电脑,控制面板,回收站之类的默认位置为“桌面”路径)
2.自己添加HOOKDRIVE,HOOKPATH环境变量,之后运行cmd等命令就从我们定义的路
径作为初始工作路径启动了。
修改方法简单吧?
替换的话,可以用replacer脚本或者其他你知道的替换系统文件的方法。
我的方式是:修改explorer.exe为explorer.old,然后替换%windir%\system32\dllcache\explorer.exe
和%windir%下。
如果是打SP补丁的系统,注意也替换掉%windir%\ServicePackFiles\i386下面的。
下面自己动手去改改看吧。 |
|