|
打开一个文件夹,然后在运行里面输入
cmd
打开的起始位置就是那个目录,很好的功能,不知道是
PE的特性,还是pecmd的效果?
XP下如何能实现啊
======================2010-04-27 分割线=============================
找到原因了,不能说是PE特殊功能,只是PE恰好没有HOME*的环境变量。
===============================================================
又是1个字节的事~
explorer打开运行对话框的时候是要到用户的主目录去。
基本上流程是:
1.获取HOMEDRIVE环境变量
2.获取HOMEPATH环境变量
3.Append连接字符串
4.检测路径是否合法
5.1.成功则运行对话框的工作路径为用户的主路径
5.2.不成功则用最后EXPLORER选中的目录(这个是我们要的效果)
PE下大家可以SET看下没有HOMEDRIVE和HOMEPATH的环境变量,
所以。。。。。。
简单的验证可以自己建立下这2个环境变量,然后运行CMD发现始终在
你设定的目录下打开,没有了上述的特性了。
知道了原理,我们要在XP上实现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下面的。
下面自己动手去改改看吧。
上述方法,
在XP SP3 中文版,英文版,日文版测试通过。
[ 本帖最后由 slore 于 2011-4-27 12:20 编辑 ] |
|