Yonsm 发表于 2007-1-26 01:23:23

另外,老九,如果你用VC6编译的话,EXIF/IFEX命令中判断内存的功能,如果遇到机器的内存大于 4G,将会肯定无法执行该 IF 命令。
因为GlobalMemoryStatusEx我定义成了没有 Ex 的。

lxl1638 发表于 2007-1-26 01:29:58

原帖由 Yonsm 于 2007-1-26 01:23 AM 发表
另外,老九,如果你用VC6编译的话,EXIF/IFEX命令中判断内存的功能,如果遇到机器的内存大于 4G,将会肯定无法执行该 IF 命令。
因为GlobalMemoryStatusEx我定义成了没有 Ex 的。

先谢过!
用VC处理字符串是本人学VC的弱点,UStrCat是将字符串连接到后面?
判断内存的功能放心,本人是直接从VS2005的帮助文件中Copy代码下来用的,实在找不到类似功能的代码,再查Delphi的相关单元文件(相当于VC的头文件),看一下它是如何调用Windows API工作的,所以本人的VC离不开Delphi的影,始终有Pascal的风格。

cdy168 发表于 2007-1-26 01:39:57

不太会用~~~下载留作备用~~~

Yonsm 发表于 2007-1-26 01:39:59

原帖由 lxl1638 于 2007-1-26 01:29 AM 发表


先谢过!
用VC处理字符串是本人学VC的弱点,UStrCat是将字符串连接到后面?
判断内存的功能放心,本人是直接从VS2005的帮助文件中Copy代码下来用的,实在找不到类似功能的代码,再查Delphi的相关单元文件(相 ...

还没睡?
C/C++ 中字符串的可用函数或类或template是很多的(CRT、WinAPI、ShellAPI、SecureStringAPI、MFC CString、STL String 等等都可以用),有时候都不知道选择什么好。最终我的方案是使用自己的一套名称,到底使用什么,看 UniBase 的实现,作为一层跨平台的通用 Platform API(实现各异,接口一致)。

至于使用,字符串操作其实很简单,就这么几个用习惯了就好了:

UStrLen
UStrCopy
UStrPrint
UStrCmp
UStrChr
UStrStr
UStrCat
其它的(UStrToAStr、UStrRep、UStrToInt、UStrFromInt),要用的时候再看罗……

triquan 发表于 2007-1-26 02:00:55

都是夜猫子,嘿嘿

Climbing 发表于 2007-1-26 08:22:05

我提些建议:

关于page命令:一般来说,我们启动PE都是用来进行系统维护的,而原机器上一般都装有xp等系统,而原来的系统一般都会有pagefile.sys,我们应该尽可能的避免pe启动时往硬盘上写入新增的文件(因为如果是在重要的数据恢复场合,这种写入,尤其是不确定磁盘的写入可能会造成数据丢失),所以,我们可以在硬盘上寻找原来的pagefile.sys,然后将PE的pagefile设置为原系统pagefile所在的分区(并且文件名相同),一般来说,原系统的pagefile.sys没有任何保留价值,只要PE的pagefile.sys的大小不超过原系统的,那么它占用的空间只是原系统pagefile的一部分,不会造成覆盖原系统数据的情况,大家以为如何?

另外,在顶楼中,老九没有讲这个IFEX命令有什么功能,如何使用。

老毛桃 发表于 2007-1-26 08:49:46

原帖由 lxl1638 于 2007-1-25 23:34 发表
更新了,支持外挂字体!切底解决了精简版WinPE的字体问题!
老九果然够强

昨天刚刚将 Yonsm 大师的 XCMD 2.2 版本 Down 下来试用,配置文件跟着作了一定更改,今天一上来就发现老九又有动作了。

FONT、FBWF、WALL、USER、RUNS、NUMK 这几个新增加的命令也比较实用,省却了在配置中使用 REGI 命令配置 FBWF、背景图片 等参数的值。
原帖由 Climbing 于 2007-1-26 08:22 发表
我提些建议:

关于page命令:一般来说,我们启动PE都是用来进行系统维护的,而原机器上一般都装有xp等系统,而原来的系统一般都会有pagefile.sys,我们应该尽可能的避免pe启动时往硬盘上写入新增的文件(因为如 ...
石头的建议有些道理,有时候的确是不能够随便向硬盘中写入任何数据的。但是换句话说,系统中原有的 Pagefile.sys 有时也是不可以随便去覆盖它啊。对于一般用户,默认的情况下 Pagefile.sys 都是在 C 盘,而如果我们此时恰恰需要通过 WinPE 来对原来的系统分区大小进行调整、格式化等操作呢?Pagefile.sys 此时在 C 盘肯定不合适。

现在猜想,可否通过在 XCMD 接管控制权的期间,在虚拟内存设置之前(事实上,如果启用了 FBWF 的话,再没有加载很多的外置程序前,内存没那么快就不够用的,除非机器内存的确相当可怜),通过接受用户的某个热键来决定是否忽略虚拟内存的设置。当然这样可能会造成一些程序因为虚拟内存没有了而无法正常运行,但是可以将外置程序中的 FinalData 放到 FBWF 分区中运行,从而安全恢复数据。

qqj 发表于 2007-1-26 09:26:03

以学习的态度下载试用,老大们辛苦了。

zts59 发表于 2007-1-26 10:44:56

原帖由 老毛桃 于 2007-1-26 08:49 AM 发表

老九果然够强

昨天刚刚将 Yonsm 大师的 XCMD 2.2 版本 Down 下来试用,配置文件跟着作了一定更改,今天一上来就发现老九又有动作了。

FONT、FBWF、WALL、USER、RUNS、NUMK 这几个新增加的命令也比较实用, ...


呵呵,启动时以某个热键来判断是否建立页面文件,这招不错。

这样对重新分区和格式化硬盘来说,是个不错的可行性。

望能实现:D:)

huang9124 发表于 2007-1-26 11:01:07

好东西,谢谢了

emca 发表于 2007-1-26 11:08:25

搞什么内置、外置的双重 XCMD.INI 文件,里面的内容居然有重复。不方便,不合理,不科学,不严谨,不支持!

triquan 发表于 2007-1-26 11:21:03

原帖由 emca 于 2007-1-26 11:08 AM 发表
搞什么内置、外置的双重 XCMD.INI 文件,里面的内容居然有重复。不方便,不合理,不科学,不严谨,不支持!

我觉得这样发即方便,又合理,又科学,又严谨!理由如下:

第一:内置是必须的,不能少!因为万一出现外置的配置文件损坏或找不到,或外置程序被删等的情况时,由于PE有了内置,已经是自成一体,完全可以不依赖于外置而启动!这时加了内置的PE可以说是一个不装任何外置软件的纯净系统。不加内置是愚蠢的行为!

第二:内外重复,可能根据个人要求删减!老九的只是示例!方便那些不会写命令的菜鸟。

第三:内外配合,可谓内外兼修,何为不严谨?

l1982012800 发表于 2007-1-26 11:41:56

有两个问题未解决,一个是安装驱动要求签名,第二个是桌面背景不是加载

triquan 发表于 2007-1-26 11:55:38

原帖由 l1982012800 于 2007-1-26 11:41 AM 发表
有两个问题未解决,一个是安装驱动要求签名,第二个是桌面背景不是加载

第一个好像已经解决,内置配置里有取消签名检验的命令。第二,那就要问问yosom和老九了

Climbing 发表于 2007-1-26 12:09:26

Re 毛桃:

如果仅仅想改变分区的大小,一个分区魔术师就足够用了,再说了我们还有Disk Director suite 或者Acronis Partiiton Expert,干嘛非得要用WinPM呢?有启动PE的时候,分区已经做好了。对我来说,系统分区是最没有用的分区,完全可以覆盖,因为没有任何重要的丢了让人掉眼泪的内容。如果你真有,只能说你不懂最基本的系统维护,反正我的C盘没有任何重要的东西,随时可以删除或者恢复ghost。另外,我一般不将pagefile.sys放到系统分区,我会专门建立一个临时分区,用来存放临时文件(%TEMP%)、IE缓存、以及pagefile.sys。这样我的C盘可以做得很小,一般不超过4G,而且,这个分区也不会存放任何有用的东西。

lxl1638 发表于 2007-1-26 12:20:56

原帖由 triquan 于 2007-1-26 11:21 AM 发表


我觉得这样发即方便,又合理,又科学,又严谨!理由如下:

第一:内置是必须的,不能少!因为万一出现外置的配置文件损坏或找不到,或外置程序被删等的情况时,由于PE有了内置,已经是自成一体,完全可以不 ...


言之有理,1楼的内置配置文件是针对IMG内的程序而定义的,即使丢掉外置程序,或外部配置文件不存在,或有错,这个PE都可以完全启动。换句话说,修改这个PE,只需修改外置配置,也建议只修改外置配置文件即可。

lxl1638 发表于 2007-1-26 12:27:29

原帖由 l1982012800 于 2007-1-26 11:41 AM 发表
有两个问题未解决,一个是安装驱动要求签名,第二个是桌面背景不是加载

1、取消安装未经签名的驱动程序警告,是下面几行,必须放在注册SHELL32.DLL等后面,因为注册这几个DLL时某些键值可能复原。


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

//注册组件与取消安装未经签名的驱动程序警告之间最好有几行其它作过渡。

TEXT 取消安装未经签名的驱动程序警告……
REGI HKCU\Software\Microsoft\Driver Signing\Policy=@0
REGI HKLM\Software\Microsoft\Driver Signing\Policy=@0
REGI HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\PrivateHash=@0x22 0x9E 0x53 0x3E 0x5D 0x08 0xAB 0xC8 0x77 0x1D 0xB9 0xD0 0xE6 0x06 0xA8 0x06


2、设置Wall必须在加载桌面之前,环境变量设定之后。

[ 本帖最后由 lxl1638 于 2007-1-26 12:28 PM 编辑 ]

strongchen 发表于 2007-1-26 12:30:06

原帖由 老毛桃 于 2007-1-26 08:49 AM 发表

老九果然够强

昨天刚刚将 Yonsm 大师的 XCMD 2.2 版本 Down 下来试用,配置文件跟着作了一定更改,今天一上来就发现老九又有动作了。

FONT、FBWF、WALL、USER、RUNS、NUMK 这几个新增加的命令也比较实用, ...

我的想法是利用 新增的 内存判断命令,如果内存太低(到达要开启page文件的程度)就call一个cmd文件

让用户选择相应的启动方式(包括启动其他的shell)。

lxl1638 发表于 2007-1-26 12:38:55

大内存的机子不存在页文件问题,因为PAGE命令会判断可用内存的数量,当可用内存足够时PAGE命令不会设置页文件的。
下面是PAGE命令的参数及说明:

PAGE <页文件名>   <初始值(最小值)>   [最大值]

1、当 可用内存 > 初始值时 ,执行上面的 PAGE 命令不会设置页文件。或者说 可以定义初始值的大小来控制设置页文件的条件。
2、可以启动后执根据具体情况来设置页文件,这个最好手动操作。

emca 发表于 2007-1-26 14:03:16

几点建议:
1、修改后的功能说明最好同时也放在 XCMD.EXE 的本身帮助中;
2、对于命令,最好以字母顺序排序,那样便于查找命令用法。否则目前的很乱。
3、对于配置文件,能够支持双重配置最好,但应当以默认外置优先,如果外总配置文件丢失或格式错误,或者执行后返回若干个错误之后,则自动调用内置的配置。这样比较合理,而不要在内部中引用外部、外部中引用内部、配置目录一会在这一会在那,这样将混乱不堪。
4、默认支持外部配置相对比较方便,因为不需要在测试过程中反复压缩PE系统映像为那个 IM_ 文件。对于默认的外部配置文件,其位置也最好有个优先级支持,即系统根目录、PE系统变量指定的系统目录、系统下面的System32目录。那样有章可循则更好。

secowu 发表于 2007-1-26 14:13:51

修改的命令
EXIF 命令经Yonsm大师同意后,修改为 IFEX ,参数和用法不变

这个最好兼容下Y的,因为,如果人家下载了Y的,现在更新你的这个修改版,那就还得修改那些CMD文件,对吧。

所以,最好能兼容,即EXIF 、IFEX都可以用就是了。。。

个人观点。。。。

Climbing 发表于 2007-1-26 14:13:54

原帖由 emca 于 2007-1-26 14:03 发表
几点建议:
1、修改后的功能说明最好同时也放在 XCMD.EXE 的本身帮助中;
2、对于命令,最好以字母顺序排序,那样便于查找命令用法。否则目前的很乱。
3、对于配置文件,能够支持双重配置最好,但应当以默认外 ...

PE是一种定制性很强的系统,尤其是使用xcmd或者老九的xpeset制作的PE系统,因此,自己定制就显得尤其重要了。在自己测试时,没有必要反复压缩将img压缩成IM_文件,直接用vdm挂载img进行编辑,然后使用虚拟机进行测试就行了,测试完成后(功能上没有大的缺陷)再进入实机测试,其实将img文件进行压缩毫无意义,因为img已经使用了ntfs的压缩功能,再压缩也不会减少多少体积,压缩功能只对iso文件有点儿效果。

lxl1638 发表于 2007-1-26 14:19:46

外置配置文件的位置完全可以自行定义,慢慢看吧。
本人的看法,固定一份内置是必要的,即使没有外置或外置给菜菜改错了,这样的系统还能顺利启动。在内置中可以引用外置,但为了避免重复引用,就 LOAD 外置即可,反对在外置中LOAD内置,这样可能会出现混乱。
说明以后再慢慢完善,目前尽可能将功能完善再说。下来的任务还是完善功能,之后再做说明,最后有可能的话,XCMD 只保留最基本功能,尽可能将其它部分做到DLL中,希望能降低启动的内存要求。

tmlu110 发表于 2007-1-26 14:42:00

好东西

huisen 发表于 2007-1-26 15:00:28

两种编码都支持吗?

bdboy 发表于 2007-1-26 15:22:35

新版似乎不太兼容,我换了新版后,进入PE环境,op浏览器引起蓝屏,换回旧版的xcmd就没事了。

Yonsm 发表于 2007-1-26 15:28:38

老九看看能不能加入这一段,使IFEX支持按键检测:

                // 增加按键检测
                if ((ptzCmd == '0') && ((ptzCmd == 'X') || (ptzCmd == 'x'))
                {
                        BOOL bPress = (GetAsyncKeyState(UStrToInt(ptzCmd)) & 0x8000) ? TRUE : FALSE;
                        uRes = (bPress == bCmp);
                }
                else
                {
                        // 下面是老的代码
                        WIN32_FIND_DATA fd;
                        HANDLE hFind = FindFirstFile(ptzCmd, &fd);
                        if ((hFind != INVALID_HANDLE_VALUE) == bCmp)
                        {
                                uRes = TRUE;
                                FindClose(hFind);
                        }
                }


用法举例:IFEX 0x12,DEVI \Windows,Display
用法说明:如果按下 Alt,则自动从本地硬盘上的\Windows中搜索显卡驱动

我就懒得去更新了。

[ 本帖最后由 Yonsm 于 2007-1-26 03:31 PM 编辑 ]

Yonsm 发表于 2007-1-26 15:34:02

原帖由 Climbing 于 2007-1-26 08:22 AM 发表
我提些建议:

关于page命令:一般来说,我们启动PE都是用来进行系统维护的,而原机器上一般都装有xp等系统,而原来的系统一般都会有pagefile.sys,我们应该尽可能的避免pe启动时往硬盘上写入新增的文件(因为如 ...


现在就大概能实现的,不过需要多两句话:
IFEX MEM<32,IFEX C:\PageFile.sys,PAGE C:\PageFile.sys 100
IFEX MEM<32,IFEX D:\PageFile.sys,PAGE E:\PageFile.sys 100
IFEX MEM<32,IFEX E:\PageFile.sys,PAGE D:\PageFile.sys 100
IFEX MEM<32,IFEX F:\PageFile.sys,PAGE F:\PageFile.sys 100

Yonsm 发表于 2007-1-26 15:35:23

原帖由 lxl1638 于 2007-1-26 02:19 PM 发表
外置配置文件的位置完全可以自行定义,慢慢看吧。
本人的看法,固定一份内置是必要的,即使没有外置或外置给菜菜改错了,这样的系统还能顺利启动。在内置中可以引用外置,但为了避免重复引用,就 LOAD 外置即可, ...

并非 DLL 什么的原因,只要把Init的功能单独放在一个EXE中就行了。你马上就可以试试看。

emca 发表于 2007-1-26 16:14:02

PE 能够压缩的话,体积大概可减小15MB左右,比较可观呢!
页: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15
查看完整版本: [PECMD X86 & X64 V4.0.2011.0501版] WinPE命令解释程序 & WinPE登录命令。