无忧启动论坛

标题: 老毛桃的PE,用win + R 在当前激活文件夹打开cmd,在XP下行么? [打印本页]

作者: yjq635    时间: 2011-4-26 08:53
标题: 老毛桃的PE,用win + R 在当前激活文件夹打开cmd,在XP下行么?
老毛桃的PE win + R 在当前激活文件夹打开cmd,在XP下行么?<br /><br />用老毛桃的PE,打开CMD的时候发现居然是在路径是我想要的目录,才发现是路径是当前打开的文件夹路径,在网上找了一圈也没有解决办法,不知道无忧上有没有人研究过?
作者: slore    时间: 2011-4-26 12:10
之前我有问过。。。

可能是由于PE的特殊性导致的,默认WIN+R运行的路径是用户的主路径,你可以运行 . 回车看到打开的目录。
而在PE下没有用户?
一直也想要这个效果,最后只能右键CMDHERE了。。。
个人觉得explorer进程是关键,与运行的命令无关。
作者: 2011足迹    时间: 2011-4-26 12:11
标题: 回复 #1 yjq635 的帖子
xp默认不行...自己研究研究吧...
作者: yjq635    时间: 2011-4-26 12:44
等待高手出现,,,,,
作者: slore    时间: 2011-4-27 08:52
已经搞定了。。。

早上时间紧。。。中午把原理和修改方法发上来,引引玉啦。
作者: slore    时间: 2011-4-27 10:37
正如我所说的,打开运行对话框的时候是要到用户的主目录去。
基本上流程是:
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下面的。

下面自己动手去改改看吧。
作者: yjq635    时间: 2011-9-8 12:08
原帖由 <i>slore</i> 于 2011-4-27 10:37 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=2216099&ptid=192357" target="_blank"><img src="http://bbs.wuyou.net/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" /></a><br />
正如我所说的,打开运行对话框的时候是要到用户的主目录去。<br />
基本上流程是:<br />
1.获取HOMEDRIVE环境变量<br />
2.获取HOMEPATH环境变量<br />
3.Append连接字符串<br />
4.检测路径是否合法<br />
5.1.成功则运行对话框的工作路径为用 ...
<br />


果然是高手啊,都忘了这事了,根据你的介绍果然搞定了,很帅啊,
我把我改了好的发上来

作者: yjq635    时间: 2011-10-6 17:30
不知道win7要改什么变量




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3