无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: lxl1638
打印 上一主题 下一主题

[PECMD X86 & X64 V4.0.2011.0501版] WinPE命令解释程序 & WinPE登录命令。

    [复制链接]
961#
发表于 2007-6-28 05:34:23 | 只看该作者
遇上一个难题。用ENVI定义PATH路径,启动PE后无效。花了两天时间,尝试很多次,翻遍PECMD相关帖子,google类似问题,都解决不了。
昨晚突然想到,运行的cmd.exe是用HOTK注册的热键启动,热键程序由PECMD或PELOGON调用。问题是,环境变量需要ENVI $刷新后(也就是SHELL启动后)程序才能使用,但PECMD早就在运行,所以通过HOTK启动的程序都继承了PECMD的环境变量。后来直接运行cmd.exe查看PATH是对的,证实了我的猜想。
这个问题有办法解决么?实在不行就只能放弃HOTK了,Win+C CMD、Win+E TC这么方便的热键用不了真是可惜。
回复

使用道具 举报

962#
 楼主| 发表于 2007-6-28 14:37:52 | 只看该作者
原帖由 rzndir 于 2007-6-17 02:20 PM 发表
我在971搂反映的问题,可能是以下原因:设置了最小配置模式启动的登录画面,壁纸就发生,如由最小配置模式加载外部配置或将PECMD换成V2,8.332就十分正常,反复多次不明原因,后来无奈将PECMD.IN改成如下正常。
...


认真看LOGO命令和TEXT命令的说明,LOGO命令有三种用法:
1、采用 LOGO 图,这是大家用得最多的;
2、不采用 LOGO 图,只设置背景颜色;
3、LOGO命令也可以转LOGO图。
回复

使用道具 举报

963#
 楼主| 发表于 2007-6-28 14:39:10 | 只看该作者
原帖由 Sense 于 2007-6-28 05:34 AM 发表
遇上一个难题。用ENVI定义PATH路径,启动PE后无效。花了两天时间,尝试很多次,翻遍PECMD相关帖子,google类似问题,都解决不了。
昨晚突然想到,运行的cmd.exe是用HOTK注册的热键启动,热键程序由PECMD或PELO ...


PECMD中的PATH与DOS的PATH是两回事!能理解PECMD的PATH命令的人不多,请你认真看它的说明。
回复

使用道具 举报

964#
发表于 2007-6-28 14:44:07 | 只看该作者
1.PEcmd对于子过程名的解释有点问题。例如存在以下两个过程:

_SUB InstallIE2
  ................................
_END
_SUB InstallIE
  ................................
_END

在调用InstallIE时会错误地调用了InstallIE2,如果改成如下这样就没问题:

_SUB InstallIE2
  ................................
_END
_SUB InstallIE1
  ................................
_END


2.如果将毛桃0418原版的pecmd换成2.8.6后
由于在在pecmd.ini和winpe.ini中都有以下语句,因此导致重复执行SHEL %SystemRoot%\EXPLORER.EXE。

FIND Explorer.EXE,!TEXT 正在载入桌面……|SHEL %SystemRoot%\EXPLORER.EXE|LOGO|TEXT

说明白点就是两个ini文件中的FIND Explorer.EXE都均会认为是“否”,而重复执行了后面的“!TEXT 正在载入桌面……|SHEL %SystemRoot%\EXPLORER.EXE|LOGO|TEXT”

按照常理,只要在winpe.ini中执行了该语句后explorer.exe就会被加载,然后再执行pecmd.ini中的这条语句时会判断FIND Explorer.EXE为“是”而不执行的。

[ 本帖最后由 zjqcomputer 于 2007-6-28 03:05 PM 编辑 ]
回复

使用道具 举报

965#
发表于 2007-6-28 15:14:44 | 只看该作者
原帖由 lxl1638 于 2007-6-28 02:39 PM 发表


PECMD中的PATH与DOS的PATH是两回事!能理解PECMD的PATH命令的人不多,请你认真看它的说明。


老九大大,我在配置文件中用了以下命令,结果进入PE后,Win+C后的PATH变量未变,直接运行cmd.exe的PATH变量正常。应该是热键呼出的cmd.exe由PECMD调用,继承了PECMD的环境变量。

HOTK Win + #0x43,CMD.EXE
ENVI $PATH=%PATH%;%CurDrv%\TOOLS
RUNS PECMD.EXE ENVI,_刷新环境变量
回复

使用道具 举报

966#
 楼主| 发表于 2007-6-28 15:24:19 | 只看该作者
原帖由 zjqcomputer 于 2007-6-28 02:44 PM 发表
.PEcmd对于子过程名的解释有点问题。例如存在以下两个过程:

_SUB InstallIE2
  ................................
_END

_SUB InstallIE
  ................................
_END

在调用InstallIE时会调用了InstallIE2,如果改成如下这样就没问题:
//=========================================================

_SUB InstallIE2
  ................................
_END
_SUB InstallIE1
  ................................
_END
//=========================================================

2.如果将毛桃0418原版的pecmd换成2.8.6后
由于在在pecmd.ini和winpe.ini中都有以下语句,因此导致重复执行SHEL %SystemRoot%\EXPLORER.EXE。

FIND Explorer.EXE,!TEXT 正在载入桌面……|SHEL %SystemRoot%\EXPLORER.EXE|LOGO|TEXT

说明白点就是两个ini文件中的FIND Explorer.EXE都均会认为是“否”,而执行了后面的“!TEXT 正在载入桌面……|SHEL %SystemRoot%\EXPLORER.EXE|LOGO|TEXT”

按照常理,只要在winpe.ini中执行了该语句后explorer.exe就会被加载,然后再执行pecmd.ini中的这条语句时会判断FIND Explorer.EXE为“是”的。


1、因为 InstallIE2 包含 InstallIE ,所以调用 InstallIE 时发现 InstallIE2 中含有 InstallIE,即会调用 InstallIE2 了。
     产生这种现象的原因是 PECMD 为了支持行后注释引起的,如下面蓝色的定义是合法的。因为 InstallIE`子过程
     包含了InstallIE。如果将 _SUB 后的字符串整行解释的话就难以支持持后注释了。
_SUB InstallIE`子过程
  ................................
_END

     解决方法如你所说,另一种是将 InstallIE 定义在 InstallIE2 之前,即:

_SUB InstallIE
  ................................
_END

_SUB InstallIE2
  ................................
_END

2、SHEL 命令指定的Explorer.EXE不是PECMD读到它即时被加载的。在PECMD执行期间,PELOGON已驻留内存,
     PECMD通过一种途径将SHEL 命令的数据发送给 PELOGON,再PELOGON加载Explorer.EXE。另一方面还涉及
     到线程的时差问题。以后假如更新的话更解决这个问题,目前要避免这种情况就是不要出现两次 SHEL 命令。
回复

使用道具 举报

967#
 楼主| 发表于 2007-6-28 15:28:35 | 只看该作者
原帖由 Sense 于 2007-6-28 03:14 PM 发表


老九大大,我在配置文件中用了以下命令,结果进入PE后,Win+C后的PATH变量未变,直接运行cmd.exe的PATH变量正常。应该是热键呼出的cmd.exe由PECMD调用,继承了PECMD的环境变量。

HOTK Win + #0x43,CMD.E ...


都说了,PATH是设置PECMD的读解INI文件期间的工作路径的,不是DOS或系统的PATH命令。
回复

使用道具 举报

968#
发表于 2007-6-28 16:29:49 | 只看该作者
原帖由 lxl1638 于 2007-6-28 03:28 PM 发表


都说了,PATH是设置PECMD的读解INI文件期间的工作路径的,不是DOS或系统的PATH命令。


我知道,PATH可以创建/删除目录,或设置当前目录。
现在的问题是,用 ENVI $PATH=... 这样的命令来设置系统环境变量PATH,并在SHEL之后ENVI刷新。但是如果某程序是通过HOTK注册热键来调用的,不会继承这个变量。
回复

使用道具 举报

969#
 楼主| 发表于 2007-6-28 17:55:12 | 只看该作者
PATH本身也是系统的环境变量,你这样可能会冲洗掉已有的%PATH%,也可能你这样冲洗环境
变量被系统拒绝执行。看看这里:
http://bbs.wuyou.net/forum.php?m ... age%3D2&page=56
回复

使用道具 举报

970#
发表于 2007-6-28 18:42:28 | 只看该作者
原帖由 lxl1638 于 2007-6-28 05:55 PM 发表
PATH本身也是系统的环境变量,你这样可能会冲洗掉已有的%PATH%,也可能你这样冲洗环境
变量被系统拒绝执行。看看这里:
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=91524&extra=page%3D2&page=56



可能我说得不够清楚,还是上幅图吧。
请看,同一个PE启动完成后,左侧的cmd是由Win+C热键调用,右侧是直接运行cmd.exe。明显可以看出,左侧的cmd继承的环境变量只是原来在SETUPREG.HIV里设置好的,后期设置的或由系统自动生成的(比如CPU品牌、类型等)都没有取得。这会不会是因为热键程序由PECMD定义和调用,所以直接继承了PECMD的环境变量,而PECMD又是在系统启动之初就运行的原因?

回复

使用道具 举报

971#
发表于 2007-6-28 18:48:59 | 只看该作者
补充一下,左侧的cmd里PATH没有D:\TOOLS,右侧有。
右侧PATH有些重复,可能是某个外置程序的影响,正在查找中。
重要的是,如果热键调用的程序无法获取后来设置的系统变量,会有很多不便之处。
回复

使用道具 举报

972#
 楼主| 发表于 2007-6-28 19:38:38 | 只看该作者
原帖由 Sense 于 2007-6-28 06:42 PM 发表



可能我说得不够清楚,还是上幅图吧。
请看,同一个PE启动完成后,左侧的cmd是由Win+C热键调用,右侧是直接运行cmd.exe。明显可以看出,左侧的cmd继承的环境变量只是原来在SETUPREG.HIV里设置好的,后期设 ...


是这样的,热键启动的程序由 PELOGON 调用,而 PELOGON 的环境变量在它启动时(注册表)就确定了,
它不会继承由PECMD设置的环境变量,PECMD也无法改就PELOGON的环境变量,PELOGON是PECMD
的父进程,PECMD没有这个能力(权限)修改PELOGON的环境变量。通过PECMD新设置的环境变量是给
启动后由桌面或EXPLORER.EXE启动的程序用的。

热键启动的程序由PELOGON调用,它也只能继承PELOGON的环境变量。
这是由系统决定的。

[ 本帖最后由 lxl1638 于 2012-7-13 12:14 编辑 ]

未命名3.JPG (10.61 KB, 下载次数: 120)

未命名3.JPG

未命名4.JPG (38.2 KB, 下载次数: 121)

未命名4.JPG
回复

使用道具 举报

973#
发表于 2007-6-28 19:59:54 | 只看该作者
多谢大大不厌其烦地解释!
如果能有其他方法解决就好了,比如热键调用后先传递当前环境变量不知能不能做到?否则热键调用的cmd、TC之类就没多大意义了。
回复

使用道具 举报

974#
 楼主| 发表于 2007-6-28 21:30:37 | 只看该作者
原帖由 Sense 于 2007-6-28 07:59 PM 发表
多谢大大不厌其烦地解释!
如果能有其他方法解决就好了,比如热键调用后先传递当前环境变量不知能不能做到?否则热键调用的cmd、TC之类就没多大意义了。


热键执行的程序最好是一些与环境变量无关的程序,如关机、重启或启动杀毒软件等;
一些与环境变量有关的程序不宜通过热键来调用,暂时没有很好的办法来解决这问题。
回复

使用道具 举报

975#
发表于 2007-6-30 14:16:20 | 只看该作者
又被郁闷了一上午。
先向变量CurMem赋值121,然后执行以下命令,结果老是说“函数错误”。
FIND $CurMem>60,IFEX %SystemDrive%\>10,EXEC =%CurDir%\WinRAR\WinRAR.exe
这就奇怪了,121>60这个条件肯定成立,%SystemDrive%盘还有60多兆空间,怎么就死活不执行呢?翻过n次PECMD说明再nn次生成ISO启动虚拟机后,刚才灵机一动,难道是121和60位数不一致?于是改成:
FIND $CurMem>060,IFEX %SystemDrive%\>10,EXEC =%CurDir%\WinRAR\WinRAR.exe
好了,它就老老实实执行了。那个汗啊~~~

另,上次那个添加路径结果产生了重复项,已经证明是PECMD引起的。所以直接用 ENVI $PATH=%PATH%;%CurDrv%\TOOLS 这样的命令不行,只能用 REGI 写注册表来迂回完成。
昨天又发现一点,多次使用TEXT ...* 这样的保留上次TEXT后,容易导致SHELL进不去。VPC上10次大概有7次“载入桌面”就停了,从日志来看都是正常的。本来是想在登录界面逐步显示当前操作的,看来是做不到了。
大大能否把WAIT指令增强一下,加入等待指定进程结束?比如 WAIT WINRAR.EXE 就可以暂停直到WINRAR.EXE执行完。
回复

使用道具 举报

976#
发表于 2007-7-2 21:52:00 | 只看该作者
一些建议
1.给wall加个参数,用于桌面图片加入失败时,显示单色桌面
2.shel命令,当shell不是explorer.exe时,如cmd将无法激活其他程序窗口
3,%CurDrv%这个环境变量不知在启动过程中何时有效
另%CurDir%环境变量是否取消了的说
回复

使用道具 举报

977#
 楼主| 发表于 2007-7-2 23:16:53 | 只看该作者
1、桌面的颜色是注册表内定的,无需用PECMD改;
2、能否帖图上来说明一下;
3、我查源码看看,这里有问题的话也要找时间才能更新。

现在PECMD虽仍有问题,但不多了,也较完善了,收集些BUG后有空再更新。
回复

使用道具 举报

978#
发表于 2007-7-2 23:54:26 | 只看该作者
1.我知道桌面背景的颜色是注册表定的 只是通过wall的一个参数重新设置
原理原来当然是修改注册表压,类似于logo命令.

2.这个问题大大用shel cmd.exe 再在cmd中开启个其他程序窗口就知道问题在那了

3.建议在命令行模式下,输出命令执行的状态(如成功或失败)的信息

4.
MENUITEM "清理临时文件夹的文件(&D)...,PECMD.EXE TEMP DELETE",  20034
MENUITEM "重新设置临时文件目录(&S)...,PECMD.EXE TEMP SETTING",  20035

我本想将他们,制成快捷方式 但不成功 (也就是将这两个命令,支持独立使用)

[ 本帖最后由 沙漠之子 于 2007-7-3 12:00 AM 编辑 ]
回复

使用道具 举报

979#
发表于 2007-7-3 23:00:26 | 只看该作者
有点复杂,下了慢慢研究下
回复

使用道具 举报

980#
 楼主| 发表于 2007-7-3 23:30:21 | 只看该作者
原帖由 沙漠之子 于 2007-7-2 11:54 PM 发表
1.我知道桌面背景的颜色是注册表定的 只是通过wall的一个参数重新设置
原理原来当然是修改注册表压,类似于logo命令.

2.这个问题大大用shel cmd.exe 再在cmd中开启个其他程序窗口就知道问题在那了

3.建议 ...


那两条命令不能独立使用,设计之初就这样定了,是PECMD不公开的命令,但只有在特定的条件下才能用。
只启动CMD.EXE,没有桌面,有些程序肯定无影无踪的,有些会最小化到左下角。关键是没有桌面。

[ 本帖最后由 lxl1638 于 2007-7-3 11:32 PM 编辑 ]
回复

使用道具 举报

981#
发表于 2007-7-5 17:08:27 | 只看该作者
能不能考滤把访问密码以窗口的形式:

目前好像是用LOGO的形式,现在我没有LOGO图片,在虚拟机上测试OK,在真实机上,出现灰屏一片片的,极不好看;

还有一个问题是因为:使用密码机制后,RUNS加载的一个输入法托盘图标程序(点内存2M多,可能启动时很大),就不能正常进入桌面;而把RUNS加载的输入法托盘图标程序注释点后,就可以正常进入桌面。

现好像两者(密码机制和RUNS加载程序)不能一起用,放弃其中一种就可进入桌面,因为密码机制同时也LOGO加载一图片好像,导致在输入密码后,LOGO的图片占用内存极大,这时再有一个稍为大一点的程序,就堵了,进不了桌面。

我可是P43.0 CUP 512M的内存,都堵死了。

[ 本帖最后由 zts59 于 2007-7-5 05:10 PM 编辑 ]
回复

使用道具 举报

982#
 楼主| 发表于 2007-7-5 17:24:43 | 只看该作者
你不看看 LOGO 命令的说明?

┣ ━━ ┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃        │格式│LOGO [文件路径][,颜色]                                                                                                         ┃
┃        ├──┼──────────────────────────────────────────────┨
┃        │功能│设置或关闭登录画面。                                                                                                            ┃
┃        ├──┼──────────────────────────────────────────────┨
┃        │参数│■文件路径为图片文件名(含路径),支持BMP/JPG/PNG/GIF等各式(需要GDI+支持)。                          ┃
┃        │      │■颜色为背景颜色,支持16进制数值。当同时设置了LOGO图和背景颜色时优先显示LOGO图。             ┃
┃        │      │■若LOGO图无效,将使用背景颜色;若设置的背景颜色无效将使用注册表内定的背景颜色。                ┃
┃        │      │■若无参数,则关闭启动画面(渐隐淡出)。                                                                                 ┃
┃LOGO├──┼──────────────────────────────────────────────┨
┃        │示例│LOGO %SystemRoot%\LOGON.JPG                                                                                         ┃
┃        ├──┼──────────────────────────────────────────────┨
┃        │备注│※此命令为非阻塞模式执行。执行本命令后,将立即执行下一条命令。因此,如果在命令行中使用,程序┃
┃        │      │  马上退出,将不能看到效果。                                                                                                 ┃
┃        │      │※此命令可多次使用。如果你愿意的话,启动过程共可以更换多个不同的图片。                                 ┃
┃        │      │※配置文件结束之前,必须调用一次不带参数的"LOGO"命令,以关闭启动画面。                               ┃
┃        │      │※使用LOGO图要求的LOGO内存会大些。                                                                                   ┃

[ 本帖最后由 lxl1638 于 2007-7-5 05:28 PM 编辑 ]
回复

使用道具 举报

983#
发表于 2007-7-5 17:56:44 | 只看该作者
原帖由 lxl1638 于 2007-7-5 05:24 PM 发表
你不看看 LOGO 命令的说明?

┣ ━━ ┿━━┿━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃        │格式│LOGO [文件路径][,颜色]              ...




晕,我根本不用LOGO,这是前提。  我是认为现在的密码机制中含有LOGO命令,才会堵死

所以建议看看能不能改变一下密码机制,以窗口的形式然后加入到PELOGON中去

[ 本帖最后由 zts59 于 2007-7-5 06:03 PM 编辑 ]
回复

使用道具 举报

984#
 楼主| 发表于 2007-7-5 18:19:20 | 只看该作者
晕,LOGO命令不一定就要有LOGO图,这个功能的出现就是为了降低LOGO内存用的。
LOGO就是一个全屏窗口,输入密码那部分只是这个窗口的一个EDIT标准控件。
当这个窗口不加载LOGO图时会大大降低内存。
回复

使用道具 举报

985#
 楼主| 发表于 2007-7-5 18:30:04 | 只看该作者
另外,可能你的PE内核大太了,本人以前那个120M版的PE(含较完整的IE6.0)在256M内存的机子都可顺利启动,启动后还有30M左右的内存。

按理 RUNS 命令加载的输入法图标不会影响加载桌面的,因为加载桌面在加载输入法图标之后。
回复

使用道具 举报

986#
发表于 2007-7-5 19:33:51 | 只看该作者
呵呵,现在我的这个问题就是,密码和RUNS 输入法图标,只能选其一,两者开启就堵死了

PE的镜像为IMG格式,不压缩才42M。
回复

使用道具 举报

987#
 楼主| 发表于 2007-7-5 19:38:08 | 只看该作者
肯定是其它地方出了问题,42M的PE有128M内存也足够了。
回复

使用道具 举报

988#
发表于 2007-7-5 19:48:08 | 只看该作者
奇怪的是,在110M虚拟机中测试都没有问题,在真机上就堵死,晕

语句:
TEAM ENVI $PE_PROG=%CurDrv%\外置程序|RUNS PECMD.EXE ENVI $,RENEW
RUNS %PE_PROG%\IME\internat.exe,Internat

SHEL %SystemRoot%\EXPLORER.EXE,***********,5|WAIT 3000|LOGO|TEXT

如果把第二句注释,就没问题


在这台945芯片的机上,PECMD密码那屏的左上那个PECMD版本信息成了一个白块,在虚拟机上可以显示!

这白块好难看呀,会不会PE内核的显卡驱动对945集成显卡有问题?除了那白块外,其他地方正常,晕

[ 本帖最后由 zts59 于 2007-7-5 08:05 PM 编辑 ]
回复

使用道具 举报

989#
发表于 2007-7-6 23:19:26 | 只看该作者
谢谢,正在学习:)
回复

使用道具 举报

990#
发表于 2007-7-7 00:02:41 | 只看该作者
没有权限下载哦
郁闷呢
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-21 06:58

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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