无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 7884|回复: 20
打印 上一主题 下一主题

问下PE下CMD打开的工作路径问题?

[复制链接]
跳转到指定楼层
1#
发表于 2010-3-7 18:31:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
打开一个文件夹,然后在运行里面输入
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 编辑 ]
2#
发表于 2010-3-7 19:10:19 | 只看该作者
xp 的 好像默认在  管理员下面呢
回复

使用道具 举报

3#
发表于 2010-3-7 19:32:12 | 只看该作者
原帖由 漫步彩云端 于 2010-3-7 19:10 发表
xp 的 好像默认在  管理员下面呢


以前还真没发现这个功能,刚进PE试了下,确实如些,不过没搞明白是怎么实现的,期待高手回答!
回复

使用道具 举报

4#
 楼主| 发表于 2010-3-8 14:47:13 | 只看该作者
希望老九能来说是不是pecmd的功能呢?


如果是我想XP下就不好实现了,就算了。
回复

使用道具 举报

5#
发表于 2010-3-8 15:01:42 | 只看该作者
既然已经打开一个文件夹,再cmd一下,实在多此一举。
回复

使用道具 举报

6#
发表于 2010-3-8 15:03:59 | 只看该作者
变通一下,在作为起始目录的文件夹上快捷菜单实现!
REGEDIT4
[HKEY_CLASSES_ROOT\*\shell\cmdhere]
@="Cmd&Here"
[HKEY_CLASSES_ROOT\*\shell\cmdhere\command]
@="cmd.exe /c start cmd.exe /k pushd \"%L\\..\""
[HKEY_CLASSES_ROOT\Folder\shell\cmdhere]
@="Cmd&Here"
[HKEY_CLASSES_ROOT\Folder\shell\cmdhere\command]
@="cmd.exe /c start cmd.exe /k pushd \"%L\""
回复

使用道具 举报

7#
 楼主| 发表于 2010-3-8 16:51:00 | 只看该作者
原帖由 dgxhls 于 2010-3-8 15:01 发表
既然已经打开一个文件夹,再cmd一下,实在多此一举。



这话说的,图形界面操作还是有限。。。

如果打开一个图片文件夹,我想得到文件列表名呢?或者我想一个for去改名呢?


这个时候cmd下,然后dir /B就行了。


如果XP下,我还得CD到该文件夹下。。。路径长了,或者有中文都比较麻烦,复制下路径也很麻烦,
CMD只能右键粘帖,不能CTRL+V


简单点一个文件加了系统属性,你在GUI下能改么?

我打开那个目录然后cmd下attrib -s多方便。。。


XP没有这么方便。


至于右键CMD HERE这个我知道(两者还是有区别,这个是打开了文件夹我已经进来了,
当然在文件夹空白出右键的菜单也是可以做出来),这里想问下这个功能罢了。
回复

使用道具 举报

8#
发表于 2010-3-8 20:53:39 | 只看该作者
回复

使用道具 举报

9#
 楼主| 发表于 2010-3-8 21:59:30 | 只看该作者
楼上可否认真看下啊。。。说了不是右键。。

你进到PE后运行cmd
看起始位置,应该是桌面吧。
打开D:\XX\目录,再运行cmd看起始位置是啥?

我进入了C:\A我对谁右键进入C:\A>_啊

不是右键的那种。
回复

使用道具 举报

10#
发表于 2010-3-8 22:41:46 | 只看该作者
XP应该也有这个功能的
我的XP有时也这样,不过不一定就是这样,可能还有别的限制因素,比如只能打开一个目录窗口
还有打开E:\1\时(例),如果起始目录为当前目录,输入E:(回车)即可切换到E:\1\
好像每个分区都可以有一个默认目录,不过开多个资源管理器窗口时可能就不认了吧
…………
突然发现CD 盘符:\文件夹\可以切换默认文件夹,之前一直都不知道
回复

使用道具 举报

11#
 楼主| 发表于 2010-3-8 22:54:20 | 只看该作者
原帖由 yyjdelete 于 2010-3-8 22:41 发表
XP应该也有这个功能的
我的XP有时也这样,不过不一定就是这样,可能还有别的限制因素,比如只能打开一个目录窗口
还有打开E:\1\时(例),如果起始目录为当前目录,输入E:(回车)即可切换到E:\1\
好像每个分区都 ...



在XP上没重现出来,但是PE却是随时随地都这样的。


XP上:
如果刚打开是C盘,你输入cd d:\abc\def\

是不转的,cd命令不改变驱动器。

此时你输入D:
就到
D:\abc\def>_

一般都是用cd /d参数,可以跨分区。


你可能是遇到这种了吧?
回复

使用道具 举报

12#
发表于 2010-3-9 10:51:45 | 只看该作者
原帖由 zhxy9804 于 2010-3-9 09:48 发表

这个是pe的特殊功能

PE为什么会有这个特殊功能,XP或者别的系统怎么实现呢? 确实很方便啊,希望哪位高手钻研下!
回复

使用道具 举报

13#
 楼主| 发表于 2010-3-9 11:53:13 | 只看该作者
原帖由 zhxy9804 于 2010-3-9 09:48 发表

这个是pe的特殊功能


谢谢告知。


最初以为pecmd的,微软的PE不是只有CMD窗口,难道这是个意外。。。
不过如果是pecmd我想应该很多人知道,现在发现没多少人用的样子。
回复

使用道具 举报

14#
发表于 2010-3-9 12:43:53 | 只看该作者
原帖由 zhxy9804 于 2010-3-8 20:27 发表
右键cmd,俺早就加上了

还有随便设置一个文件夹的效果,其它文件夹也跟着变的



10.右键增加命令提示符和用记事本打开
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\_software\Classes ...


你这个[HKEY_LOCAL_MACHINE\_software\Classes并是不系统默认的,而是在software前加多了下划线,有什么特别的意思吗?
回复

使用道具 举报

15#
 楼主| 发表于 2010-3-9 12:48:43 | 只看该作者
原帖由 xianglang 于 2010-3-9 12:43 发表


你这个[HKEY_LOCAL_MACHINE\_software\Classes并是不系统默认的,而是在software前加多了下划线,有什么特别的意思吗?


应该是挂在PE的注册表文件吧
回复

使用道具 举报

16#
 楼主| 发表于 2011-4-27 12:22:50 | 只看该作者
隔了一年了,被人又问出来了,所以就稍稍看了下。。。
没想到还真找到原因了。。。

发现1年还是学会了不少东西,呵呵。

也许这个功能用到的人不多,找到原因了,并实现了所以还是发帖标记下。
不好意思挖坟了。
回复

使用道具 举报

17#
发表于 2012-4-26 17:00:18 | 只看该作者
我还要继续挖坟,追问下windows7下怎么修改,现在windows7用的越来越多了,但cmd始终都是要用的,可惜咱不懂,只能拿来主义了。
回复

使用道具 举报

18#
发表于 2017-1-27 14:56:19 | 只看该作者
学习了!原来如此
回复

使用道具 举报

19#
发表于 2017-4-4 23:02:19 | 只看该作者
受教了,原来如此
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-29 07:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表