| 
 | 
 
打开一个文件夹,然后在运行里面输入 
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 编辑 ] |   
 
 
 
 |