无忧启动论坛

标题: PECMD & XCMD 使用讨论,欢迎参加! [打印本页]

作者: lxl1638    时间: 2007-2-17 09:45
标题: PECMD & XCMD 使用讨论,欢迎参加!
本人开这个主题的目的有三:

1、告知大家,到此PECMD在没有发现重大BUG前提下将不再更新了;
2、简单说明一下使用PECMD的注意事项;
3、简单介绍PECMD几条新命令的使用。

一、PECMD在XCMD2.0原有17条命令基础上经本人修改完善了7条命令
(其实远不只7条,一些被修改的命令参数不变就不作说明而已,如WAIT命令)、
补充了19+1条命令(1条帮助说明中还没加上去),现在的功能已足够丰富了,
基本上能满足本人对PE的使用要求。至此已经觉得没有更新的必要了。

二、PECMD与XPELOGON比较,在登录过程有很大的差别,XPELOGON讲求严谨、安全和兼容,
无论是登录步骤和关机步骤都能体现出来,用户在配置登录过程只能按它指定的步骤去做,
或者只能更改它其中的很小的部分,也可以说中规中举,所以通过XPE插件登录WinPE往往
较慢但成功率较大,最多是启动后的界面用户要调整而已。而PECMD 或 XCMD讲求自由和速度,
登录过程用户可以通过自定义的配置文件来控制,但配置文件一旦不合理往往登录失败。
那么如何使用PECMD才能顺利登录呢?条件有两点:

1、注册表中用户文件夹的信息要完整,即位于
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
项中以下8项的键值必须齐全
Favorites
Desktop
StartMenu
Startup
Programs
SendTo
Personal
QuickLaunch

2、%USERPROFILE%目录所处的位置要有一定的可写空间(不一定是X盘,存在RamDisk的话在B盘)
上述两点具备的话,PECMD三条命令(或者二条)即可登录WinPE,这三条命令是:
INIT
FBWF(或RAMD)
SHEL %SystemRoot%\EXPLORER.EXE

因此使用PECMD登录WinPE时,在执行INIT命令之前需保证%USERPROFILE%所处的位置有一定的空间,
这个空间可以通过FILE命令删一些文件或开启FBWF(RAMD)来获得。

三、PECMD几条命令的使用
1、ENVI命令
貌似平凡,但作用很大,除了能设置环境变量外,XCMD & PECMD的说明中提到:“会自动继承本程序的环境变量”
这条命令可以使长命令变短。
如这样的长命令(注意是一行的),无论在记事本或帖在论坛上都不便阅读:
REGI HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\PrivateHash=@0x22 0x9E 0x53 0x3E 0x5D 0x08 0xAB 0xC8 0x77 0x1D 0xB9 0xD0 0xE6 0x06 0xA8 0x06

通过 ENVI 命令可以将它变成三条短命令:
ENVI V1=HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\PrivateHash
ENVI V2=0x22 0x9E 0x53 0x3E 0x5D 0x08 0xAB 0xC8 0x77 0x1D 0xB9 0xD0 0xE6 0x06 0xA8 0x06
TEAM REGI %V1%=@%V2%|ENVI V1=|ENVI V2=

2、TEAM命令
能将几条短命令写在一行的命令,如上面的第3行,再如,在TEAM命令出现以前,杀进程删文件的操作是一行一行来的:
KILL SMSS
KILL WINLOGON
FILE SMSS.EXE
FILE WINLOGON.EXE

且也很难设置延时操作,TEAM命令的出现可以使上述一连串的操作写成一条命令,且非常容易加上延时等待:
TEAM WAIT 5000|KILL SMSS|KILL WINLOGON|FILE SMSS.EXE|FILE WINLOGON.EXE

TEAM命令的真正威力不在上面的示例,而是放在启动项,通过PECMD的TEAM命令能在启动项可控地有序地执行一连串的操作,
包括延时、按指定顺序启动其它程序!关于这点将在最后给一个示例。

3、RUNS命令
用于设置启动项,RUNS命令出现之前是通过REGI或EXEC命令来设置启动项的,远不如RUNS命令直观,也极难控制启动项,
它的精妙之处请看YY版外部配置文件的启动项(其中PATH命令在帮助说明中没加上,作用是设置PECMD的当前工作目录)设置:
/////////////////////////////////////////////////////////////////////////////////
; 设置启动项
_SUB Setting_Run
     ; 安装极点输入法、注册外置程式、安装驱动程序、设置显示刷新率
     ENVI V0=DESK 正在安装驱动,请稍候...#0xFFL400T300$20
     ENVI V1=PATH %CurDrv%\外置程序
     ENVI V2=EXEC !REGDOC.CMD
     ENVI V3=EXEC FREEWB\FREEWB.EXE
     ENVI V4=DEVI $PE_DRIVER\DRIVERS_VGA.CAB
     ENVI V5=DEVI $PE_DRIVER\DRIVERS_NET.CAB
     ENVI V6=DEVI $PE_DRIVER\DRIVERS_SND.CAB
     ENVI V7=EXEC PE_DRIVER\SETDISPLAY.EXE F85
     ENVI VX=PECMD TEAM
     RUNS %VX% %V0%|%V1%|%V2%|%V3%|%V4%|%V5%|%V6%|%V7%,难以理解的命令
     TEAM ENVI V0=|ENVI V1=|ENVI V2=|ENVI V3=|ENVI V4=|ENVI V5=|ENVI V6=|ENVI V7=|ENVI VX=
_END

/////////////////////////////////////////////////////////////////////////////////

这个启动项只需启动一份PECMD,它有序可控地执行了8条命令(若%CurrDrv%为F: ):
在桌面显示文字信息(正在安装驱动,请稍候...)
设置PECMD的当前工作目录(F:\外置程序)
执行一条老毛桃的CMD批处理注册所有的外挂程序(F:\外置程序\REGDOC.CMD)
启动极点自解压安装程序(F:\外置程序\FREEWB\FREEWB.EXE)
解压显卡驱动并加以安装,位于(F:\外置程序\PE_DRIVER\DRIVERS_VGA.CAB)
解压网卡驱动并加以安装,位于(F:\外置程序\PE_DRIVER\DRIVERS_NET.CAB)
解压声卡驱动并加以安装,位于(F:\外置程序\PE_DRIVER\DRIVERS_SND.CAB)
启动显示设置工具,设置刷新率85,工具位于(F:\外置程序\PE_DRIVER\SETDISPLAY.EXE)

它的精妙之处是可控有序(一条一条)地执行,等待驱动安装完成才设置刷新率。
如果不使用ENVI、TEAM、PATH、RUNS命令,这个启动项很难控制(不用PATH将PECMD的当前工作目录设置成
F:\外置程序,这个启动项超256个字符,系统拒绝执行
)
最后一行是删除已设置的变量(V0~V7、VX)。

本人就谈到此,希望起到抛砖引玉的作用。

[ 本帖最后由 lxl1638 于 2007-2-19 06:21 PM 编辑 ]
作者: strongchen    时间: 2007-2-17 10:20
以下几个步骤,在cd上,没有开启fbwf的情况下可以执行吗?(应该是不行的)
如果不行,用什么命令可以代替?(老九在之前的帖子上说过可以用rundll32.exe来做的,具体说一下)
  1. CALL SHELL32.DLL,DllInstall,#1,I
  2. CALL BROWSEUI.DLL,DllInstall,#1,I
  3. CALL SHDOCVW.DLL,DllInstall,#1,I
  4. CALL SHELL32.DLL,DllInstall,#1,U
复制代码

作者: xypcmac    时间: 2007-2-17 10:35
1、注册表中用户文件夹的信息要完整,即位于
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
项中以下8项的键值必须齐全


QUOTE:
Favorites
Desktop
StartMenu
Startup
Programs
SendTo
Personal
QuickLaunch



有没有写错呢?

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
作者: yjliu668    时间: 2007-2-17 10:45
请问老九:使用PECMD.EXE初始化,WinPE.IS_与WinPE.IM_哪个占用内存更低?
作者: strongchen    时间: 2007-2-17 10:54
原帖由 yjliu668 于 2007-2-17 10:45 AM 发表
请问老九:使用PECMD.EXE初始化,WinPE.IS_与WinPE.IM_哪个占用内存更低?

与pecmd.exe无关吧,使用ntfs压缩,肯定是IM_格式省内存。
作者: l1982012800    时间: 2007-2-17 11:03
越来越强,如何设置用户变量 像XPEINIT一样
作者: 123    时间: 2007-2-17 11:33
不知是否有必要改变在调用外部程序时等外部程序结束才运行下一条命令
原帖由 老毛桃 于 2007-2-16 10:21 AM 发表

IE 图标显示不正常,可能是由于你的机器速度不够快,在加载 Explorer.exe 出现桌面的时候,InstallIE.CMD 的进程仍未完成,可以尝试在显示出桌面数秒后,刷新一下桌面,再看看。

如果 IE 图标仍然未看到,可 ...

作者: yjliu668    时间: 2007-2-17 11:38
原帖由 strongchen 于 2007-2-17 10:54 AM 发表

与pecmd.exe无关吧,使用ntfs压缩,肯定是IM_格式省内存。

谢谢老猫!给您拜个早年!
作者: 狂家三少    时间: 2007-2-17 13:40
呵呵,这人贴子不错,学到不少东东!
作者: lxl1638    时间: 2007-2-17 18:37
原帖由 strongchen 于 2007-2-17 10:20 AM 发表
以下几个步骤,在cd上,没有开启fbwf的情况下可以执行吗?(应该是不行的)
如果不行,用什么命令可以代替?(老九在之前的帖子上说过可以用rundll32.exe来做的,具体说一下)
CALL SHELL32.DLL,DllInstall,#1, ...


到网上查一下RunDll32的使用方法,通过Rundll32.exe注册完那三个DLL后,再启动Shell即可,但这样启动的PE有很多限制(尽管有完整的桌面),窗口不能开三个以上,使用24小时后重启,这点MS很早就说了。
因为关键一点(初始化桌面)目前只能通过专门的程式,如XPELOGON或PECMD之类来完成。
作者: habert    时间: 2007-2-18 20:53
学习了,非常感谢!
作者: starfamily    时间: 2007-2-18 22:43
支持这样的好东西。。
作者: Yonsm    时间: 2007-2-21 11:49
老九真的是越来越强了……
作者: tinyhe    时间: 2007-2-28 16:44
执行下面的命令后,屏幕变得刺眼,看不清text的输出,且不能显示登陆画面,是最新的PECMD V2.4.3
LOGO %CurDrv%\外置程序\桌面背景\RXPE.JPG
作者: lxl1638    时间: 2007-2-28 18:35
只会依样画样,我怎么说呢?先将帮助说明从头看一次,但有耐性看完的人不多。

连帮助说明都没有耐性看完的人,敢说做不出什么来,以前本人是这样骂123MM的。

[ 本帖最后由 lxl1638 于 2007-2-28 06:48 PM 编辑 ]
作者: 123    时间: 2007-2-28 20:09
原帖由 lxl1638 于 2007-2-28 06:35 PM 发表
只会依样画样,我怎么说呢?先将帮助说明从头看一次,但有耐性看完的人不多。

连帮助说明都没有耐性看完的人,敢说做不出什么来,以前本人是这样骂123MM的。

那你错了,我做出什么来恐怕只有你才不知道吧。别以为只有你才是真本事。
作者: lxl1638    时间: 2007-2-28 20:10
原帖由 123 于 2007-2-28 08:09 PM 发表

那你错了,我做出什么来恐怕只有你才不知道吧。别以为只有你才是真本事。


举例而已,希望不要计较。
作者: l1982012800    时间: 2007-2-28 20:14
123=MM ???
作者: lxl1638    时间: 2007-2-28 20:16
另外,看你对VB还很有水平的,试过PowerBasic没,简直就是Basic语法的VC++,BASIC简单易学的语法,VC++的功能,只是目前没有中文帮助,很多人说它做出的EXE文件执行效率在VC之上,asm之下,文件的体积比VC的还小。

[ 本帖最后由 lxl1638 于 2007-2-28 08:18 PM 编辑 ]
作者: lxl1638    时间: 2007-2-28 20:19
原帖由 l1982012800 于 2007-2-28 08:14 PM 发表
123=MM ???


有什么想法?或者已名花有了呢!

[ 本帖最后由 lxl1638 于 2007-2-28 08:24 PM 编辑 ]
作者: 黑色de郁金香    时间: 2007-3-7 15:58
标题: 请问 谁有 PECMD 的源代码呀?
我想用汇编重写一下,好加快启动速度,谁有请发给我一份,谢谢了!
作者: 沙漠之子    时间: 2007-3-7 16:51
原帖由 黑色de郁金香 于 2007-3-7 03:58 PM 发表
我想用汇编重写一下,好加快启动速度,谁有请发给我一份,谢谢了!

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D2
一楼最后
如果能弄出来真的很厉害的说
另:那里有很经典的教程,小弟最近也在研究汇编
作者: ghostfox    时间: 2007-3-7 17:31
东西不错,顶起来
作者: Yonsm    时间: 2007-3-7 18:46
原帖由 黑色de郁金香 于 2007-3-7 03:58 PM 发表
我想用汇编重写一下,好加快启动速度,谁有请发给我一份,谢谢了!


既然看到了,我就好心说一句:汇编不会效率高到哪里去的。现在的编译器不是傻子
作者: lxl1638    时间: 2007-3-7 18:51
原帖由 Yonsm 于 2007-3-7 06:46 PM 发表


既然看到了,我就好心说一句:汇编不会效率高到哪里去的。现在的编译器不是傻子



有人接手做下去总是好事。
管它什么,反正本人就不干了。
作者: yulongjin    时间: 2007-3-19 23:13
标题: 怎么没了 %CurDir% 当前目录 环境变量?
怎么没了 %CurDir% 当前目录 环境变量?
作者: lxl1638    时间: 2007-3-20 12:57
没有当前目录,但有当前驱动器%CurDrv%
作者: tiancai4126    时间: 2007-4-11 16:17
几个月没有来 没想到老九居然把XCMD 强化了很多阿! 我刚下载了老毛桃的新版pe 发现用的是PECMD启动的特地过来从新学习一下!
作者: webfox    时间: 2007-4-21 08:57
学习了,非常感谢:D
作者: wdshop    时间: 2007-9-16 23:17
原帖由 lxl1638 于 2007-2-17 06:37 PM 发表


到网上查一下RunDll32的使用方法,通过Rundll32.exe注册完那三个DLL后,再启动Shell即可,但这样启动的PE有很多限制(尽管有完整的桌面),窗口不能开三个以上,使用24小时后重启,这点MS很早就说了。
因为关 ...



难道 现在的PE没有24小时限制的,比如那个版本?
作者: 逛逛    时间: 2007-11-7 08:26
对pe里面的启动机制不是很清楚, 就是镜像调到内存之后的处理.
xcmd 或 pecmd 怎样被调用的 在哪里设置

假如说要将xcmd改名, 需要在哪里修改?
作者: liaohaibo    时间: 2008-9-10 17:46
学到知识了,谢谢~~
作者: liaohaibo    时间: 2008-9-10 17:49
原帖由 逛逛 于 2007-11-7 08:26 发表
对pe里面的启动机制不是很清楚, 就是镜像调到内存之后的处理.
xcmd 或 pecmd 怎样被调用的 在哪里设置

假如说要将xcmd改名, 需要在哪里修改?



修改 WINPE.IS_ 里面包含的注册表项就可以了。
作者: 2011hakkai181    时间: 2011-11-14 00:16
FIND Explorer.EXE,!TEAM SHEL %WinDir%\EXPLORER.EXE|LOGO|TEXT
请各路大神帮忙解答下,这条命令是个什么意思
FIND <条件>,[命令1][!命令2]
我没看到条件在哪,不知道他要FIND what?
作者: feifanll    时间: 2013-5-11 15:50
2011hakkai181 发表于 2011-11-14 00:16
FIND Explorer.EXE,!TEAM SHEL %WinDir%\EXPLORER.EXE|LOGO|TEXT
请各路大神帮忙解答下,这条命令是个什么 ...

查找进程EXPLORER,有,结束。无,载入
作者: wylgogogo    时间: 2014-6-29 15:08
留名,下次继续来学习。
作者: logokey    时间: 2014-8-30 11:07
作为一名新手,真不知从何处开始学习啊。




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