lxl1638 发表于 2010-5-30 21:33:01

PECMD.EXE SHOW 命令详解。

.
      近期从论坛上下载了几个 WinPE 来学习,也无意搜索到一些网页关于 PECMD SHOW
命令的使用方法。发现不少人对 PECMD SHOW 命令了解不够或有误解(多数不带参数),
所以有必要将 SHOW 命令的说明更新一下,同时也细化了 PECMD SHOW 命令的功能。

      PECMD SHOW 命令设计的本意是加载没有被资源管理器自动分配盘符的硬盘分区,
在设计当初本人就有一条原则----不主动加载隐藏分区,因为用户隐藏一个分区必然有自己
的目的,主动加载隐藏分区不符合系统维护和保护数据的目的,所以省略参数的 SHOW
命令是无法加载隐藏分区的,要加载隐藏分区必须设置合理的参数。

   以下是最新版 PECMD SHOW 命令的说明:



┣━━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃      │格式│SHOW [磁盘分区],[盘符字母],[等待时间]                                                       ┃
┃      ├──┼──────────────────────────────────────────────┨
┃      │功能│显示系统存在的移动硬盘、固定硬盘的隐藏分区或沒有加载的分区,并给这些分区分配盘符。          ┃
┃      ├──┼──────────────────────────────────────────────┨
┃      │参数│■磁盘分区: 由 [硬盘号或标识符:分区号] 组成,"硬盘号"与"标识符"只取其一。                   ┃
┃      │    │            ◆硬盘号: 用数值表示,小于"0"表示所有的硬盘、U盘和移动硬盘,"0"表示"hd0","1"表示┃
┃      │    │                      "hd1","2"表示"hd2","3"表示"hd3",依次类推;                         ┃
┃      │    │            ◆标识符: 用"F"或"U"表示,"F"表示固定硬盘,"U"表示U盘或USB移动硬盘;            ┃
┃      │    │            ◆分区号: 用数值表示,小于"0"表示全部还没有盘符的分区,"0"表示全部还没有盘符的可┃
┃      │    │                      见分区,"1"表示第1分区,"2"表示第2分区,"3"表示第3分区,依次类推;    ┃
┃'SHOW'│    │■盘符字母: 用字母"C~Z"表示,省略"盘符字母"或设置盘符不合理时由 PECMD.EXE 自动分配盘符。   ┃
┃      │    │■等待时间: 数字,表示为设备就绪等待若干时间(毫秒)后才执行分配盘符的功能。                  ┃
┃      ├──┼──────────────────────────────────────────────┨
┃      │示例│SHOW 0:1,H 或 SHOW U:1,U 或 SHOW F:0 或 SHOW U:0,,3000 或 SHOW U:-1 或 SHOW               ┃
┃      ├──┼──────────────────────────────────────────────┨
┃      │备注│※某些机型在WinPE启动后已经可以识别移动硬盘,但没有为移动硬盘指派盘符,可以通过 SHOW 命令的 ┃
┃      │    │"U"标识符为移动硬盘分配盘符,示例2表示给"移动硬盘的第1分区"指派为盘符"U:";               ┃
┃      │    │※示例1表示"硬盘0分区1"指派为盘符"H:",示例3表示自动为"固定硬盘的所有可见分区"指派盘符;    ┃
┃      │    │※通常"等待时间"可以省略,"等待时间"是驻留内存的PECMD在检测到移动硬盘插入时内部使用的变量; ┃
┃      │    │※省略所有参数的SHOW命令不会主动载入隐藏分区,要载入隐藏分区,"分区号"必须设置为数值"-1";┃
┃      │    │※删除盘符可用SUBJ命令,该命令与SUBJ命令配合,可载入隐藏分区的外置程序并保持原分区隐藏属性。┃
┣━━━┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫


      PECMD 将硬盘介质分为两种类型,即传统的固定硬盘和USB介质硬盘(含U盘)。要操作那种类型磁盘可由参数中的标识符或硬盘号来
决定,如要操作硬盘则应使用标识符 F,操作USB移动硬盘或U盘则应使用标识符 U;也可使用数字来操作指定ID的硬盘(见说明)。
      PECMD 将无盘符的分区类型分为两类,即可见分区和隐藏分区。要操作那种类型分区可由参数分区号来决定,"0"表示没有分配符盘
的可见分区(分区表中的属性是可见分区,但资源管理器还没有指派盘符),小于"0"表示全部没有分配盘符的分区(含可见分区和隐藏分)。
所以要加载隐藏分区,关键是要设置好分区号,现举几个例子来说明。

加载无盘符的可见分区:
加载第2硬盘无盘符的分区:   SHOW 1:0
加载第2硬盘的第4分区:   SHOW 1:4
加载所有固定硬盘无盘符的分区:SHOW F:0
加载USB磁盘无盘符的分区: SHOW U:0
加载所有磁盘(含USB设备)无盘符的分区: SHOW -1:0

加载无盘符的磁盘分区(含可见分区和隐藏分区):
加载第2硬盘的隐藏分区:   SHOW 1:-1
加载所有硬盘的隐藏分区:SHOW F:-1
加载USB磁盘的隐藏分区: SHOW U:-1
加载所有磁盘(含USB设备)的隐藏分区: SHOW -1:-1

[ 本帖最后由 lxl1638 于 2010-5-31 11:55 编辑 ]

lxl1638 发表于 2010-5-30 23:16:00

原帖由 zxw 于 2010-5-30 22:54 发表 http://bbs.wuyou.net/images/common/back.gif
比如说,pesudo的0PE采用多级扩展结构,一级内核需要首先用cmd.exe来引导,然后才加载二级内核启动PE.似乎新版pecmd好象限制了第一控制权。只能由它启动cmd.exe,不能由cmd.exe启动它。
忽又想起0PE的结构特点 ...

这样啊?你先试试能不能将PECMD放入一级内核作为第一个程来使用,当然在二级内核没有加载之前,PECMD.INI要尽可能使用更少的命令,或者只执行 EXEC 命令启动加载二级内核的 CMD。
PECMD只有执行到相应的命令才加载那些不常用的DLL的,并没有使用很多DLL的说法,
新版PECMD和旧版的PECMD一样可以在只有10多M的骨头版PE使用,你说会使用到很多DLL么。

renchmin 发表于 2010-5-30 21:40:48

一直在找这方面的资料的,楼主提供的很详尽啊

zxw 发表于 2010-5-30 21:59:40

老九能修改一下支持二级内核的PE就好了。

lxl1638 发表于 2010-5-30 22:18:42

原帖由 zxw 于 2010-5-30 21:59 发表 http://bbs.wuyou.net/images/common/back.gif
老九能修改一下支持二级内核的PE就好了。

什么意思?什么要求?详细说明一下。

zxw 发表于 2010-5-30 22:54:03

回复 #4 lxl1638 的帖子

比如说,pesudo的0PE采用多级扩展结构,一级内核需要首先用cmd.exe来引导,然后才加载二级内核启动PE.似乎新版pecmd好象限制了第一控制权。只能由它启动cmd.exe,不能由cmd.exe启动它。

忽又想起0PE的结构特点,算了当我没说。
0PE是先用cmdpe.gz进入windows命令行窗口,然后加载desktop.wim进入pe桌面的。
新版PECMD也许支持中文。但它不能直接用于0PE。因为:
1. 新版的PECMD要求把PECMD作为第一个程序来运行,以便获得控制权。否则就不符合其版权限制,会拒绝进入桌面。
2. 新版的PECMD用到很多体积较大的dll动态库,而这些打包在desktop.wim。加载desktop.wim之前无法运行pecmd。
3. 如果运行cmd.exe来加载desktop.wim,pecmd就不是第一个程序了。...

[ 本帖最后由 zxw 于 2010-5-30 22:56 编辑 ]

maanu 发表于 2010-5-31 05:04:52

llxl1638

i wanted to ask you again , is it too hard to port PECMD to use english based PE's . or is there any special old version of PECMD which worksOK with english based PE's ?

the only script that we use in winbuilder for enabling themes support in xp based PE , uses PECMD for only shut down related problems ,
below i am pasting only the code of the script for PECMD which he used ,.,


// Use PECMD rather than PELoader 32-Bit only
If,%SourceArch%,EQUAL,X86,Begin
RegWrite,HKLM,0x1,WB-Setup\Setup,CmdLine,"PECMD.EXE MAIN %SystemRoot%\SYSTEM32\PECMD.INI"
If,%LogonType%,Equal,True,RegWrite,HKLM,0x4,"WB-Software\Microsoft\Windows NT\CurrentVersion\Winlogon",LogonType,1
FileCopy,%ProjectTemp%\XPThemes\PECMD\PECMD.exe,%target_sys%,NOWARN
FileCopy,%ProjectTemp%\XPThemes\PECMD\PECMD.ini,%target_sys%,NOWARN
End

here is PECMD.INI content

FIND Explorer.EXE,!TEAM SHEL %WinDir%\EXPLORER.EXE|LOGO|TEXT


this way , PECMD works very well for shutdown ONLY , but for other functions , like making shortcuts etc , PECMD does not work .

anyone can explain why does it happen ? i am really confused .

(sorry if i am off topic)

Regards,
Maanu from Pakistan

Plantsoot 发表于 2010-5-31 08:59:20

好强大,有这个强大的功能,又可以衍生出很多工具。
收藏起来了,好好学习下,说不定又有新的想法。
谢谢lxl1638 大侠。

顺便问下

谁测试过是否可以加载 fbinst的隐藏分区?

[ 本帖最后由 Plantsoot 于 2010-5-31 09:02 编辑 ]

zxw 发表于 2010-5-31 11:47:15

回复 #6 lxl1638 的帖子

没有成功,进入桌面之前就重启了,因最近较忙,未及详细查看细节。

111kkk 发表于 2010-5-31 11:49:55

好东东深入浅出!!!!!

pseudo 发表于 2010-5-31 14:45:41

原帖由 lxl1638 于 2010-5-30 23:16 发表 http://bbs.wuyou.net/images/common/back.gif
这样啊?你先试试能不能将PECMD放入一级内核作为第一个程来使用,当然在二级内核没有加载之前,PECMD.INI要尽可能使用更少的命令,或者只执行 EXEC 命令启动加载二级内核的 CMD。
PECMD只有执行到相应的命令才加载那些不常用的DLL的,并没有使用很多DLL的说法,
新版PECMD和旧版的PECMD一样可以在只有10多M的骨头版PE使用,你说会使用到很多DLL么。
0pe先启动到cmdpe(一级内核),然后再加载desktop.wim(二级内核)。
这样做的原因之一是u盘在启动之初,不一定能达到usb 2.0高速。那么分解内核,尽量减少u盘启动初期读取文件总体积,也就是一级内核的体积,是有意义的。
许多dll放在二级内核,这部分是在进入windows cmd后读取的,这时已经是usb2.0高速,体积大小,是否骨头已经无所谓。

一级内核基本上相当于cmdpe,比骨头版PE少dll,或者差不多。这时可以运行某些程序,不能运行pecmd:


要加较大体积的dll才行,那样会明显增加cmdpe体积。
所用的pecmd版本为:


这个已经比07年的版本需要的dll多。
即使后来dll有了,更新的版本也用不成,因为这个可能是支持pelogon的最后版本了。
还有,在做英文版(中英混杂,部分英文)时,不能启动shel,提示pecmd不能改名之类,但我没改名。

试过用pecmd作为第一程序调用cmd.exe,结果会重启。zxw在#9楼也遇到了。

有网友做过simple pecmd,需要dll少,可以作为第一启动程序运行,但后面启动shel还得用旧版pecmd。

楼主能否让新版继续支持pelogon这种不以pecmd为第一程序的用法,或者提供需要动态库少的pecmd(功能减少点也可以),
以便在cmdpe环境下能作为第一启动程序,后面再与需要动态库多的功能强的新版pecmd衔接,启动shel。

我理解并支持楼主限制pecmd为第一程序、取消pelogon的做法。不过这样在0pe中无法应用新版pecmd强大功能,令人遗憾。

最后,感谢楼主提供这么好的作品。

lxl1638 发表于 2010-5-31 15:05:16

原帖由 pseudo 于 2010-5-31 14:45 发表 http://bbs.wuyou.net/images/common/back.gif

0pe先启动到cmdpe(一级内核),然后再加载desktop.wim(二级内核)。
这样做的原因之一是u盘在启动之初,不一定能达到usb 2.0高速。那么分解内核,尽量减少u盘启动初期读取文件总体积,也就是一级内核的体积 ...

你将一级内核打包放到某个地方,本下来试试。

HB天意 发表于 2010-5-31 15:09:45

原帖由 lxl1638 于 2010-5-31 15:05 发表 http://bbs.wuyou.net/images/common/back.gif


你将一级内核打包放到某个地方,本下来试试。
我的完美者U盘维护pe也不能直接使用最新版PECMD。
一个是不支持在cmd下运行新pecmd。一个是对dll的需要比较大。

如果能够像SIMPCMD.EXE那样只需要部分dll就可以启动执行就好了。

[ 本帖最后由 yidawpf 于 2010-5-31 15:12 编辑 ]

zxw 发表于 2010-5-31 15:44:52

回复 #12 lxl1638 的帖子

见此帖6楼:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158364

网虫2008 发表于 2010-5-31 15:54:08

原帖由 yidawpf 于 2010-5-31 15:09 发表 http://bbs.wuyou.net/images/common/back.gif

我的完美者U盘维护pe也不能直接使用最新版PECMD。
一个是不支持在cmd下运行新pecmd。一个是对dll的需要比较大。

如果能够像SIMPCMD.EXE那样只需要部分dll就可以启动执行就好了。

我的PE内核也算是骨头了,从昨晚开始一直在测试新版PECMD.EXE,还没发现少DLL的问题,能否详细说下,大家一起测试。

lxl1638 发表于 2010-5-31 16:54:57

原帖由 zxw 于 2010-5-31 15:44 发表 http://bbs.wuyou.net/images/common/back.gif
见此帖6楼:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158364
一大堆,不知道那个才是。

sratlf 发表于 2010-5-31 17:02:35

回复 #16 lxl1638 的帖子

可以下载这个

http://www.brsbox.com/filebox/down/fc/1969dc1a8ece99e367ea1945696a7af3

pseudo 发表于 2010-5-31 18:17:06

原帖由 lxl1638 于 2010-5-31 15:05 发表 http://bbs.wuyou.net/images/common/back.gif
你将一级内核打包放到某个地方,本下来试试。
谢谢楼主关注。
0PE_To_lxl1638.rar(33.3MB)
内有说明。

lxl1638 发表于 2010-5-31 23:33:36

原帖由 pseudo 于 2010-5-31 18:17 发表 http://bbs.wuyou.net/images/common/back.gif

谢谢楼主关注。
0PE_To_lxl1638.rar(33.3MB)
内有说明。

先下来看看再说,尽本人的能力。
可能搞不定,也可能要假期以后才能开搞。

pseudo 发表于 2010-6-1 00:41:24

让楼主费心了。
chenall的pe,yidawpf的pe都是类似结构,如果能用上新版pecmd就太好了。

lxl1638 发表于 2010-6-1 14:46:26

原帖由 pseudo 于 2010-6-1 00:41 发表 http://bbs.wuyou.net/images/common/back.gif
让楼主费心了。
chenall的pe,yidawpf的pe都是类似结构,如果能用上新版pecmd就太好了。

可能很快可以帮你搞定,基本框架已编译好,工作原理是按顺序执行一个INI文件中列出的(CMD和EXE)命令,如这个INI文件的命令列表可以是:

AutoRun_1.CMD(或CMD.EXE) 参数
WIMX.EXE 参数
AutoRun_2.CMD(或CMD.EXE) 参数
PECMD.EXE 参数

目前(56K)只需一个DLL(KERNEL32.DLL),现在打算将代码移到VC6中编译以减小体积,同时补充完善一些功能。
另,本人要了解一级内核中有没有 WinLogon.EXE 和 CMD.EXE 这两个文件,如果没有这两个文件就麻烦了。
你将一级内核的系统文件列一下,主要是 DLL 和 EXE 文件。

[ 本帖最后由 lxl1638 于 2010-6-1 14:48 编辑 ]

HB天意 发表于 2010-6-1 16:49:38

我的:
驱动器 F 中的卷没有标签。
卷的序列号是 6CE2-4EF4

F:\王老师\SYSTEM32 的目录

2010-06-0116:41    <DIR>          .
2010-06-0116:41    <DIR>          ..
2009-01-0108:00         685,056 ADVAPI32.DLL
2009-01-0108:00            70,656 AUTHZ.DLL
2008-08-0816:00            52,736 BASESRV.DLL
2009-01-0108:00             1,777 BIOSINFO.IN_
2009-01-0108:00             6,348 BOOTVID.DL_
2009-01-0108:00         329,728 CMD.EXE
2010-06-0116:41    <DIR>          CONFIG
2009-01-0108:00         586,752 CRYPT32.DLL
2009-01-0108:00            33,792 CSRSRV.DLL
2009-01-0108:00             4,096 CSRSS.EXE
2009-01-0108:00             8,386 CTYPE.NLS
2009-01-0108:00            66,082 C_1252.NLS
2009-01-0108:00            90,722 C_936.NL_
2010-06-0116:41    <DIR>          DRIVERS
2008-08-0816:00            10,240 FIND.EXE
2009-01-0116:00            10,752 FRAMEBUF.DLL
2008-10-2404:19         284,672 GDI32.DLL
2009-01-0108:00            55,064 HAL.DL_
2009-01-0108:00            50,243 HALAACPI.DL_
2009-01-0108:00            41,836 HALACPI.DL_
2009-01-0108:00         147,968 IMAGEHLP.DLL
2008-05-2505:09            13,312 ISOCMD.EXE
2009-01-0108:00             4,194 KDCOM.DL_
2009-01-0108:00         771,584 KERNEL32.DLL
2009-01-0116:00         262,846 LOCALE.NLS
2009-01-0108:00               847 L_INTL.NL_
2009-01-0116:00            57,856 MPR.DLL
2009-01-0108:00            57,344 MSASN1.DLL
2009-01-0116:00         348,672 MSVCRT.DLL
2009-01-0108:00            17,408 NDDEAPI.DLL
2009-01-0108:00         345,088 NETAPI32.DLL
2009-01-0108:00         643,072 NTDLL.DLL
2009-03-2704:00         1,120,299 NTOSKRNL.EX_
2009-01-0108:00            83,748 PRCP.NLS
2009-01-0108:00            22,528 PROFMAP.DLL
2009-01-0108:00            20,480 PSAPI.DLL
2009-01-0108:00            69,120 REG.EXE
2009-01-0108:00            56,320 REGAPI.DLL
2009-01-0108:00         642,048 RPCRT4.DLL
2009-01-0108:00            65,024 SECUR32.DLL
2008-08-2903:09            25,761 SETPAGEFILE.EXE
2009-01-0108:00         1,012,224 SETUPAPI.DLL
2009-10-1720:09            61,163 SETUPREG.HI_
2009-08-0205:44            19,456 SIMPCMD.EXE
2009-09-0300:36               101 SIMPCMD.INI
2009-01-0108:00            53,760 SMSS.EXE
2009-01-0108:00         262,148 SORTKEY.NLS
2009-01-0108:00            23,550 SORTTBLS.NLS
2009-09-2820:50             1,804 STARTPE.CMD
2009-01-0108:00         724,480 SXS.DLL
2009-01-0108:00            89,588 UNICODE.NLS
2009-01-0108:00         579,072 USER32.DLL
2009-01-0108:00         760,320 USERENV.DLL
2009-01-0108:00            18,432 VERSION.DLL
2009-01-0108:00            10,752 VGA.DLL
2009-01-0108:00            25,343 VGA256.DL_
2009-01-0108:00             9,419 VGA64K.DL_
2009-01-0108:00             2,437 VGAOEM.FO_
2009-01-0108:00         1,848,832 WIN32K.SYS
2009-03-2704:00         511,488 WINLOGON.EXE
2009-01-0108:00         300,032 WINSRV.DLL
2009-01-0108:00            56,320 WINSTA.DLL
2009-01-0108:00         164,864 WINTRUST.DLL
2009-01-0108:00            19,456 WS2HELP.DLL
2009-01-0108:00            83,456 WS2_32.DLL
            63 个文件   13,802,954 字节
               4 个目录 46,705,160,192 可用字节

lxl1638 发表于 2010-6-1 17:07:03

原帖由 yidawpf 于 2010-6-1 16:49 发表 http://bbs.wuyou.net/images/common/back.gif
我的:
驱动器 F 中的卷没有标签。
卷的序列号是 6CE2-4EF4

F:\王老师\SYSTEM32 的目录

2010-06-0116:41            .
2010-06-0116:41            ..
2009-01-0108:00         685,0 ...
本人要的不是你这个,是要P大的一级内核。
你这个完全可以启动PECMD的。

HB天意 发表于 2010-6-1 18:06:13



@echo off
PUSHD %~dp0
SET TP=%CD%
CD %TP%\SYSTEM32
START /D%WinDir%\system32 LSASS.EXE
START /D%WinDir%\system32 SERVICES.EXE
SimpCMD.EXE TEXT 检查是否需要设置虚拟内存... #0xFFFFFF L20 T550 R500 B580 $20
start /wait PECMD.EXE SHOW -1:-1
isocmd /f 98 >nul
if ERRORLEVEL 1(
SimpCMD.EXE TEXT 内存不足,请设置虚拟内存... #0xFFFFFF L20 T550 R500 B580 $20
pecmd.exe forx \pagefile.sys,pf,0,file %pf%
start /wait z:\system\system32\SETPAGEFILE.EXE
ISOCMD /F 98 >nul
if NOT ERRORLEVEL 1 (GOTO SET_FBWF) ELSE (echo 内存不足!&& Goto end)
)
:SET_FBWF
SimpCMD.EXE TEXT 设置FBWF空间... #0xFFFFFF L20 T550 R500 B580 $20
start /wait PECMD.EXE FBWF P40 L64 H300
SimpCMD.EXE TEXT 清理系统盘无效的文件... #0xFFFFFF L20 T550 R500 B580 $20
DEL %WinDir%\TXTSETUP.SI* /Q /F >NUL
DEL %WINDIR%\SYSTEM32\WIN32K.SYS /Q /F >NUL
DEL %WINDIR%\SYSTEM32\*.*_ /Q /F >NUL
DEL %WINDIR%\SYSTEM32\DRIVERS\*.SY_ /Q /F >NUL
RD%WINDIR%\SYSTEM32\config /Q /S >NUL
SimpCMD.EXE TEXT 复制系统文件... #0xFFFFFF L20 T550 R500 B580 $20
copy /y %TP%\*.exe %WinDir%\ >nul
if exist %TP%\fonts copy /y %TP%\fonts\*.* %WinDir%\fonts >nul
copy /y %TP%\system32\*.* %WinDir%\system32 >nul
SimpCMD.EXE TEXT 调用系统脚本... #0xFFFFFF L20 T550 R500 B580 $20
cd /d %WinDir%\system32
start PECMD.EXE main %TP%\type.ini

HB天意 发表于 2010-6-1 18:19:59

关键的是pecmd不支持在cmd状态下运行。

HB天意 发表于 2010-6-4 13:12:20

有些数据丢失了。。。。。。。。。。

老九说的我试过了。好像没有用。不能直接用pecmd加载。

pseudo 发表于 2010-6-4 14:45:14

原帖由 lxl1638 于 2010-6-1 14:46 发表 http://bbs.wuyou.net/images/common/back.gif

可能很快可以帮你搞定,基本框架已编译好,工作原理是按顺序执行一个INI文件中列出的(CMD和EXE)命令,如这个INI文件的命令列表可以是:

目前(56K)只需一个DLL(KERNEL32.DLL),现在打算将代码移到VC6中编 ...
论坛变动,先前回帖丢失。
列表如下
ADVAPI32 DLL
AUTHZ    DLL
BASESRVDLL
BIOSINFO IN_
BOOTVIDDL_
CMD      EXE
CRYPT32DLL
CSRSRV   DLL
CSRSS    EXE
CTYPE    NLS
C_1252   NLS
C_936    NLS
FBINST   EXE
FLTLIB   DLL
FRAMEBUF DLL
GDI32    DLL
HAL      DL_
HALAACPI DL_
HALACPIDLL
IMAGEHLP DLL
KDCOM    DL_
KERNEL32 DLL
LOCALE   NLS
L_INTL   NLS
MSASN1   DLL
MSVCRT   DLL
NDDEAPIDLL
NETAPI32 DLL
NTDLL    DLL
NTOSKRNL EX_
PROFMAPDLL
PSAPI    DLL
REGAPI   DLL
RPCRT4   DLL
SECUR32DLL
SETUPAPI DLL
SETUPREG HI_
SMSS   EXE
SORTKEYNLS
SORTTBLS NLS
SXS      DLL
UNICODENLS
USER32   DLL
USERENVDLL
VERSIONDLL
VGAOEM   FO_
WIMGAPIDLL
WIN32K   SYS
WINLOGON EXE
WINSRV   DLL
WINSTA   DLL
WINTRUST DLL
WS2HELPDLL
WS2_32   DLL

lxl1638 发表于 2010-6-4 19:21:09

原帖由 pseudo 于 2010-6-4 14:45 发表 http://bbs.wuyou.net/images/common/back.gif

论坛变动,先前回帖丢失。
列表如下
ADVAPI32 DLL
AUTHZ    DLL
BASESRVDLL
BIOSINFO IN_
BOOTVIDDL_
CMD      EXE
CRYPT32DLL
CSRSRV   DLL
CSRSS    EXE
CTYPE    NLS
C_1252   NLS
C_9 ...

你这个是一级内核的文件列表?那么多?不会吧。
这样的文件足以启动 PECMD 了。

pseudo 发表于 2010-6-4 20:33:18

回复 #28 lxl1638 的帖子

是一级内核的文件列表。
启动pecmd不成功,见#11楼图。

[ 本帖最后由 pseudo 于 2010-6-4 20:34 编辑 ]

lxl1638 发表于 2010-6-5 00:44:32

原帖由 pseudo 于 2010-6-4 20:33 发表 http://bbs.wuyou.net/images/common/back.gif
是一级内核的文件列表。
启动pecmd不成功,见#11楼图。

你试试这组文件,本人按 NT6.x 系列 PE 的登录原理做了一个 WinPEShl.EXE 。
使用方法是:
1、注册表 CmdLine 为WinPEShl.EXEXXXX.INI
这个 XXXX.INI 文件可以自己取名,如果省略 WinPEShl.EXE 的参数(XXXX.INI 文件名),
则自动加载 SYSTEM32 目录中的 WinPEShl.INI 文件。
2、WinPEShl.INI 文件的写法与 NT6.x 系列 WinPE 的基本相同,有个两节:
节定义了系统外壳,这里应是 PECMD.EXE MAIN PECMD.INI
节定义了加载外壳前要启动的一些命令,如 CMD.EXE 等。

你的PE可以这样写 WinPEShl.INI 文件
AppPath="PECMD.EXE MAIN PECMD.INI"

=CMD.EXE,"/K AutoRun.CMD"本人制作的这个 WinPEShl.EXE 与 NT6.x 系列 WinPE 中的有所不同:
1、不能用它代替 NT6.x 系列 WinPE 中的 WinPEShl.EXE,只能在 NT5.x 系列 WinPE 中使用
2、不会自动加载 %SYSTEMDRIVE%\sources\setup.exe 和 %SYSTEMROOT%\system32\startnet.cmd
3、节定义的命令可以使用 [=][@][[!]||[&]] 等前导符,其作用与 PECMD EXEC 命令定义的一样

注意:
1、节定义的外壳命令只能是一个,并是阻塞方式执行,
WinPEShl.EXE 加载外壳命令后将停止执行 WinPEShl.INI 文件中的其它命令,
并驻留内存,要到加载桌面后用 PECMD KILL 结束它
2、如果 节定义的命令加上了前导 "=" ,这个命令必须能自动结束,否则不会加载其后的命令和外壳。

本人提供的 WinPEShl.EXE 是 Win32GUI 程序,只链接引用 NTDLL.DLL 和 kernel32.dll 两个DLL,你可以先这样调试:
WinPEShl.INI 中只启动 CMD.EXE,看看能否启动成功,如果能,说明 WinPEShl.EXE 可以在你的 0PE 中工作,再按正规方法
写 WinPEShl.INI 文件。

以下是本人从网上找到的关于 WinPEShl.EXE 和 WinPEShl.INI 的说明

Winpeshl.exe 会执行%SYSTEMDRIVE%\sources\setup.exe,
如果文件不存在,Winpeshl.exe会从%SYSTEMROOT%\system32\winpeshl.ini中读取信息并执行相应的程序,
如果没有指定,则执行cmd /k %SYSTEMROOT%\system32\startnet.cmd命令。
默认环境下WinPE会原带Startnet.cmd文件指向Wpeinit.exe,Wpeinit.exe加载并运行网络配置信息。
(startnet.cmd 中加载了 Wpeinit.exe,所以老外的 Win7PE 都很慢)

Winpeshl.ini Files
更新时间: 2009年5月
应用到: Windows 7
Winpeshl.ini 可控制是将自定义外壳程序加载到 Windows(R) PE,还是加载到默认的“命令提示符”窗口。
若要加载自定义外壳程序,请创建一个名为 Winpeshl.ini 的文件,然后将它放在自定义 Windows PE 映像
的 %SYSTEMROOT%\System32 中。该 .ini 文件必须包含以下部分和项。

AppPath = %SYSTEMDRIVE%\myshell.exe

%SYSTEMDRIVE%\mydir\application1.exe, {option}
将 AppPath 项设置为外壳应用程序的路径。可以使用完全限定路径,也可以使用环境变量(例如 %SYSTEMROOT%\System32\Myshell.exe)。
AppPath 项不支持命令行选项。
使用 部分运行带命令行选项的应用程序。应用程序按照列出的顺序运行。应用程序的名称与其选项之间以逗号分隔。
当退出“命令提示符”窗口或自定义外壳应用程序时,Windows PE 将重新启动。

Winpeshl.ini的格式

AppPath = %SYSTEMDRIVE%\myshell.exe

%SYSTEMDRIVE%\mydir\application1.exe, -option1 -option2
application2.exe, -option1 -option2
可以有上面两节中的一节或者两节。
第一节不一定是shell,但是不管是什么,不能带参数
(微软这里的说明有错,本人试过是可以带参数的,就是将命令和参数一起用双引号包围,如
AppPath = "%SYSTEMDRIVE%\myshell.exe -option1 -option2")

第二节可以是任何命令或者其他的应用程序,但是要注意的是如果是命令的话,参数必须用引号包起来,譬如
bcdedit.exe," -set path \windows\system32\winload.exe"
imagex.exe,"-capture c:\1.wim 1 c:"


[ 本帖最后由 lxl1638 于 2010-6-5 01:28 编辑 ]
页: [1] 2
查看完整版本: PECMD.EXE SHOW 命令详解。