无忧启动论坛

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

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

    [复制链接]
发表于 2007-1-22 16:22:30 | 显示全部楼层
最后一句不应该是加载 Shell,而是应该等待一段时间,等 LOGO 慢慢淡出。

看我原来贴子里的 XCMD.INI
回复

使用道具 举报

发表于 2007-1-22 16:28:52 | 显示全部楼层
另外,老九,下面的东西:

ENVI $Desktop=%USERPROFILE%\桌面
ENVI $StartMenu=%USERPROFILE%\「开始」菜单
ENVI $Programs=%USERPROFILE%\「开始」菜单\程序
ENVI $QuickLaunch=%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Quick Launch
ENVI $Favorites=%USERPROFILE%\Favorites
ENVI $Startup=%USERPROFILE%\「开始」菜单\程序\启动
ENVI $SendTo=%USERPROFILE%\SendTo
ENVI $Personal=%USERPROFILE%\My Documents



只要写一条
ENVI $
即可。

而且,应该这样才比较好,因为这样 XCMD 会创建这些目录(如果不存在的话)。
并且,这句最好要在很前面,这样后面 注册 DLLInstall 才会成功。

再有:
TEXT 正在注册组件……
CALL SHELL32.DLL,DllInstall,#1,I
CALL BROWSEUI.DLL,DllInstall,#1,I
CALL SHDOCVW.DLL,DllInstall,#1,I

之后最好再来一句:
EXEC @=XCMD.EXE CALL SHELL32.DLL,DllInstall,#1,U
这样可以创建“显示桌面”的命令在快速启动栏上。不需要我们去创建的。不过这句会导致移动画面一闪,但是加了“@”用 EXEC来执行,就可以解决问题了——在后台桌面执行此命令。

上面说的这些东西,大家仔细看一下。特别是 DllInstall 这些东西,一定要在 ENVI $ 之后,在“TEXT 正在设定系统”那些东西之前,否则会有问题。
回复

使用道具 举报

 楼主| 发表于 2007-1-22 17:13:47 | 显示全部楼层
双学到了很多,谢谢。
回复

使用道具 举报

发表于 2007-1-22 17:45:26 | 显示全部楼层
感谢楼主的分享,继续学习。
回复

使用道具 举报

 楼主| 发表于 2007-1-22 17:46:40 | 显示全部楼层
原帖由 Yonsm 于 2007-1-22 04:28 PM 发表
另外,老九,下面的东西:
[quote]
ENVI $Desktop=%USERPROFILE%\桌面
ENVI $StartMenu=%USERPROFILE%\「开始」菜单
ENVI $Programs=%USERPROFILE%\「开始」菜单\程序
ENVI $QuickLaunch=%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Quick Launch
ENVI $Favorites=%USERPROFILE%\Favorites
ENVI $Startup=%USERPROFILE%\「开始」菜单\程序\启动
ENVI $SendTo=%USERPROFILE%\SendTo
ENVI $Personal=%USERPROFILE%\My Documents

只要写一条
ENVI $
即可。

而且,应该这样才比较好,因为这样 XCMD 会创建这些目录(如果不存在的话)。
并且,这句最好要在很前面,这样后面 注册 DLLInstall 才会成功 ...
再有:
TEXT 正在注册组件……
CALL SHELL32.DLL,DllInstall,#1,I
CALL BROWSEUI.DLL,DllInstall,#1,I
CALL SHDOCVW.DLL,DllInstall,#1,I
之后最好再来一句:
EXEC @=XCMD.EXE CALL SHELL32.DLL,DllInstall,#1,U
这样可以创建“显示桌面”的命令在快速启动栏上。不需要我们去创建的。不过这句会导致移动画面一闪,但是加了“@”用 EXEC来执行,就可以解决问题了——在后台桌面执行此命令。

[/quote]


按大师的方法,以下变量均已设置。
$Desktop
$StartMenu
$Programs
$Favorites
$Startup
$SendTo
$Personal


但 $QuickLaunch 没有被设置,快速启动栏没有出来。现在还是在PE中,等下看源码。
未命名.PNG
回复

使用道具 举报

发表于 2007-1-22 22:31:15 | 显示全部楼层
原帖由 lxl1638 于 2007-1-22 05:46 PM 发表

但 $QuickLaunch 没有被设置,快速启动栏没有出来。现在还是在PE中,等下看源码。


可以呀!
Snap1.jpg
回复

使用道具 举报

 楼主| 发表于 2007-1-22 23:23:59 | 显示全部楼层
原帖由 xdg3669 于 2007-1-22 10:31 PM 发表
可以呀!


你的IMG是那个版本的?
回复

使用道具 举报

发表于 2007-1-23 00:13:28 | 显示全部楼层
我的也可以,YONSM1.14版+FBWF
Snap1.jpg
回复

使用道具 举报

发表于 2007-1-23 00:19:15 | 显示全部楼层
关于快速启动栏没有出来的现象,我来说两句,大概有30%~50%的几率会在我的机器上出现,我用的是“(1月9日)利用XCMD和INFCACHE全自动化安装驱动,跟XP一样的老九元旦多媒体版”,本以为acoa大侠下版会解决,现在就麻烦您先给瞧瞧喽。
回复

使用道具 举报

 楼主| 发表于 2007-1-23 01:23:46 | 显示全部楼层
快速启动栏位于深层多级目录,可能XCMD没有建立这个深层多级目录,本人刚试,若在IMG中事先建立这个目录,快速启动栏就出来了。

原因是不少PE的IMG内没有事先建立这个深层多级目录。

是否会建立这样的深层多级目录,还需原作者来解释,本人也在找代码。若是Delphi,一个4行简单的递归就搞定,但刚学VC,函数都没找到,更不要说用法。
回复

使用道具 举报

 楼主| 发表于 2007-1-23 01:31:18 | 显示全部楼层
原帖由 zhaohj 于 2007-1-23 12:13 AM 发表
我的也可以,YONSM1.14版+FBWF


你的IMG是不是已经存在那个目录了?
回复

使用道具 举报

发表于 2007-1-23 01:58:20 | 显示全部楼层
老九加一个获取系统可用内存的命令阿,在启动过程中可用判断很多事情。虽然现在用 systeminfo.exe 也可以,但这个exe占47K空间,太大了。
回复

使用道具 举报

发表于 2007-1-23 04:37:38 | 显示全部楼层
原帖由 lxl1638 于 2007-1-23 01:31 AM 发表


你的IMG是不是已经存在那个目录了?

我用的也是(1月9日)版的,可以出来快速启动,好像和命令执行顺序有关,我的执行顺序是:设置fbwf--注册组件--设定系统--创建内部快捷方式--加载外部配置(安装外部软件--创建外部快捷方式--外部文档关联--设置虚拟内存和加载壁纸)--载入桌面(先kill xx,再logo,最后才EXEC $EXPELORER)--file清理垃圾
回复

使用道具 举报

发表于 2007-1-23 07:51:28 | 显示全部楼层
原帖由 lxl1638 于 2007-1-22 11:23 PM 发表


你的IMG是那个版本的?


我用的是你的元旦YY版。没有事先建立文件夹。

[ 本帖最后由 xdg3669 于 2007-1-23 07:53 AM 编辑 ]
回复

使用道具 举报

发表于 2007-1-23 08:10:04 | 显示全部楼层
原帖由 wchf2 于 2007-1-23 12:19 AM 发表
关于快速启动栏没有出来的现象,我来说两句,大概有30%~50%的几率会在我的机器上出现,我用的是“(1月9日)利用XCMD和INFCACHE全自动化安装驱动,跟XP一样的老九元旦多媒体版”,本以为acoa大侠下版会解决,现在 ...

不知你是否改了什么东东了,我在所有的机器每次都可以出来的。从没有过不出来的现象。
回复

使用道具 举报

发表于 2007-1-23 08:28:16 | 显示全部楼层
我似乎找到原因:
每种命令开始前,必须有一个空行,或者 //,比如 Link 类型的命令开始前就必须有,其他依此类推。
另外,如果菜单项目中,存在相同路径的条目(比如我们可能会把某些具有多种功能特性的程序同时放到两个菜单下以方便查找),则肯定会重现不能出现菜单的故障。
其实,快速启动栏和菜单项不出来时,系统仍然是创建了它们,只不过路径不正确,它被创建到 X\I386\ 这个目录下,而且是以 %QuickLaunch% 这样的原始变量名存在的目录!也就是说,出错后,系统环境变量丢失。——这才是问题原因的根本,可能是程序代码中处理环境变量有欠缺,当创建菜单的函数遇到异常时(包括开始标志、路径等是否重复等),变量开始失效。从而导致上述故障。
回复

使用道具 举报

发表于 2007-1-23 08:28:33 | 显示全部楼层
原帖由 lxl1638 于 2007-1-23 01:31 AM 发表


你的IMG是不是已经存在那个目录了?


只建了个user目录,user目录是空的
Snap1.jpg
回复

使用道具 举报

发表于 2007-1-23 12:08:14 | 显示全部楼层
有几个问题,希望高手指点一下:
原帖由 kingpanfeng 于 2007-1-23 11:14 AM 发表
有几个问题,希望高手指点一下:
1.光棍版中要使用XCMD,注册表那些地方要修改?system32中的文件有哪些需要变化?
2.如何用XCMD在光棍版中加入FBWF功能?
请高手们不吝赐教,谢谢!
回复

使用道具 举报

发表于 2007-1-23 12:13:43 | 显示全部楼层
zhaohj兄,能否说一下在YONSM1.14版+FBWF中如何处理XCMD.INI的,我直接替换yonsm原版中的xcmd.exe后,出现循环加载XCMD.INI的情况。
想把XCMD.INI外置,我只保留原来的LOAD \XCMD.INI一句却无法加载C盘下的XCMD.INI
回复

使用道具 举报

发表于 2007-1-23 14:53:24 | 显示全部楼层
原帖由 lxl1638 于 2007-1-23 01:23 AM 发表
快速启动栏位于深层多级目录,可能XCMD没有建立这个深层多级目录,本人刚试,若在IMG中事先建立这个目录,快速启动栏就出来了。

原因是不少PE的IMG内没有事先建立这个深层多级目录。

是否会建立这样的深层多 ...


可以递归创建目录,但关键是你们没有使用不带参数的 ENVI 命令。请使用不带参数的ENVI命令:

ENVI

ENVI $

各位请仔细看帮助
回复

使用道具 举报

 楼主| 发表于 2007-1-23 14:54:24 | 显示全部楼层
快速启动栏是否出现与命令的顺序有关,以YY版为源头的修改版可以参照一楼的配置文件来处理,有两份配置文件,若你加减了外置程序的话,不要动内部配置文件,只修改外部配置文件即可。
回复

使用道具 举报

 楼主| 发表于 2007-1-23 14:57:44 | 显示全部楼层
原帖由 Yonsm 于 2007-1-23 02:53 PM 发表


可以递归创建目录,但关键是你们没有使用不带参数的 ENVI 命令。请使用不带参数的ENVI命令:

ENVI

ENVI $

各位请仔细看帮助


知道了,能建立多级目录,本人在2003下用命令行参数调试可,可以建立多级目录,快速启动栏的问题与命令和命令的顺序有关,经多次试验,一楼的配置文件是可行的。
回复

使用道具 举报

发表于 2007-1-23 15:02:43 | 显示全部楼层
原始短消息: 早上好,刚起床,又看一下 XCMD 2.0源码,找到了渐隐淡出的问题了。
原始短消息: 早上好,刚起床,又看一下 XCMD 2.0源码,找到了渐隐淡出的问题了。


若没有事先在IMG内建立 %USERPROFILE% 相应的目录的话,好象位于深层多级目录的快速启动栏不能建立,本人试过,若先建立快速启动栏目录的话,XCMD就会建立快速启动栏的快捷方式,若不建立那个目录的话,很多IMG(基于YY版修改的)无法建立快速启动栏的快捷方式。

现在正在想找建立多级目录的VC代码来试。

H:\Documents and Settings\用户名\Application Data\Microsoft\Internet Explorer\Quick Launch


我已经在你的贴子里面回复过了,现在又回复了一次。
请仔细查看我的说明。

另外 Quick Launch 目录我现在想想有点问题:

UStrCat(p, TEXT("\\Microsoft\\Internet Explorer\\Quick Launch"));

把这句末尾再加上一个 \\ 即可
UStrCat(p, TEXT("\\Microsoft\\Internet Explorer\\Quick Launch\\"));

这是因为我改动 UDirCreate后忘了更改这个调用。


但是我的 RXPE 中不会出现问题,是因为我注册了
EXEC @=XCMD.EXE CALL SHELL32.DLL,DllInstall,#1,U
这个会自动创建显示左面的命令,所以规避了这个问题。
回复

使用道具 举报

 楼主| 发表于 2007-1-23 15:02:55 | 显示全部楼层
原帖由 strongchen 于 2007-1-23 01:58 AM 发表
老九加一个获取系统可用内存的命令阿,在启动过程中可用判断很多事情。虽然现在用 systeminfo.exe 也可以,但这个exe占47K空间,太大了。


比如说什么时候或什么样的设置需要用到?
在XCDM中加?XCMD已不是控制台命令了,加上也没多大作用,因为可用内存是时刻变的,XCMD可以将可用内存写到注册表或环境变量,但你需要用到这些数据时,可能已发生了很大的变化。
回复

使用道具 举报

发表于 2007-1-23 15:04:14 | 显示全部楼层
请老九更新一下,改掉这个 BUG,然后发布一个正式的版本吧。
回复

使用道具 举报

 楼主| 发表于 2007-1-23 15:05:19 | 显示全部楼层
原帖由 Yonsm 于 2007-1-23 03:02 PM 发表
原始短消息: 早上好,刚起床,又看一下 XCMD 2.0源码,找到了渐隐淡出的问题了。


我已经在你的贴子里面回复过了,现在又回复了一次。
请仔细查看我的说明。

另外 Quick Launch 目录我现在想想有点问题: ...


是的,本人调试时也发现UDirCreate会少建立一级目录。

[ 本帖最后由 lxl1638 于 2007-1-23 03:06 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-1-23 15:08:58 | 显示全部楼层
原帖由 Yonsm 于 2007-1-23 03:04 PM 发表
请老九更新一下,改掉这个 BUG,然后发布一个正式的版本吧。


想完善一个说明文件,表格的(还没做好,先放上来):

[ 本帖最后由 lxl1638 于 2007-1-23 03:10 PM 编辑 ]
未命名.PNG
回复

使用道具 举报

发表于 2007-1-23 15:09:51 | 显示全部楼层
希望qinjg8008大大也能来完善XCMD,减小体积

另:关于锁定SHELL希望在配制文件中设定,因为本人有时没了减少内存手工关闭explorer.exe的说
回复

使用道具 举报

发表于 2007-1-23 15:12:04 | 显示全部楼层
原帖由 lxl1638 于 2007-1-23 03:02 PM 发表


比如说什么时候或什么样的设置需要用到?
在XCDM中加?XCMD已不是控制台命令了,加上也没多大作用,因为可用内存是时刻变的,XCMD可以将可用内存写到注册表或环境变量,但你需要用到这些数据时,可能已发生了 ...


我有个想法没有去实现,不知道老九有没有兴趣:就是在命令前加上条件判断,决定是否执行。比如:

?Free(Mem)<64 PAGE C:\PageFile.sys 100
?Free(X:\)<2 FILE NTOSKNRL.EXE
?Exist(X:\Tools\WinRAR\WinRAR.exe) ***************

等等,条件判断可以增加,比如判断已经用了多少内存,有多少内存空闲,文件是否存在,磁盘可写空间有多少,分辨率是多少等等

支持== < <= > >= != 这几种比较操作符,和默认[==TRUE]的判断(如 Exist 函数)
回复

使用道具 举报

发表于 2007-1-23 15:14:21 | 显示全部楼层
原帖由 lxl1638 于 2007-1-23 03:05 PM 发表


是的,本人调试时也发现UDirCreate会少建立一级目录。


因为新版本的 UDirCreate 改动过,但这处没改过来,导致这个问题。
不过 Link 命令似乎不会出现问题吧?

不过,如果 %USERPROFILE%目录已经创建的话,这个问题不会出现:

if (SHGetSpecialFolderPath(NULL, p, c_sMacro.iFolder, TRUE))

因为这里指定了会创建目录,不过我很莫名其妙的是 MS 的 SHGetSpecialFolderPathAPI竟然因为这种原因没能创建目录。

[ 本帖最后由 Yonsm 于 2007-1-23 03:21 PM 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 09:16

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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