最新版本修改了命令文件解释的方式(使用独立进程启动),优点是启动后 XCMD.EXE 所需的内存从 8M 减小到 5M。
一些细节性修改,请仔细看红色部分文字,为最新更新和更改的功能。
如果没问题,这将是最后一个版本。
欢迎使用 XCMD - XPE Commander,功能强大的 XPE 命令解释工具!
一、特点
◎ 短小精干,运行迅速。
◎ 支持常规的扩展设置命令。
◎ 支持调用外部 EXE 和 DLL 函数。
◎ 支持格式统一的命令行参数和命令文件。
◎ 细微周到的功能支持。功能及其强大。
◎ 完全替代系统登录程序,且登录操作完全使用 INI 命令文件配置,修改 INI 就能完全控制登录步骤。
◎ 源代码公开,方便更改定制。在源代码中增加扩展命令非常容易。
二、使用
◎ 使用命令行参数:例如,要设置环境变量,执行“XCMD.EXE ENVI $PPPoE=OK”即可。
◎ 使用命令文件:例如,“XCMD.EXE LOAD %SystemRoot%\XCMD.INI”。
◎ 命令参数支持环境变量解析(如“%TEMP%\X.TXT”);命令不区分大小写;尖括号“<>”内的参数表示必须输入,方括号“[]”内的表示可以省略。
◎ 通常情况下,您只需要编辑一个命令文件 XCMD.INI 任何磁盘的根目录,里面列出需要执行的命令。然后在 PE 启动的时候执行“XCMD.EXE INIT”即可。
◎ 如果要替换 XPELogon 等其它 PE 登录程序,可能需要做使用一系列“REGI”命令或创建一个注册表文件做初始设置操作。当然,直接修改注册表也可以。
三、命令
■ INIT [文件路径]
◎ 功能:初始化桌面,接管 Ctrl+Ald+Del,并创建新进程执行 LOAD 功能。
◎ 参数:指定初始化的命令文件路径。
◎ 示例:INIT %SystemRoot%\XCMD\XCMD.INI
◎ 备注:此命令用于代替 XPELogon 登录系统,可以完全控制登录进度。Ctrl+Shift+Alt+Del 将会退出 INIT 线程,如果在登录状态,将直接重新启动计算机
■ LOAD [文件路径]
◎ 功能:按顺序逐条运行命令文件中的命令。
◎ 参数:指定文件的路径。如果省略,将自动搜索每个分区根目录中的 XCMD.INI(注意防止嵌套调用)。
◎ 示例:LOAD
◎ 备注:
※ 每条命令单独一行。
※ 命令是完全按顺序执行的。
※ 不正确的命令或空行将忽略不计。
※ 注释必须单独放一行,推荐使用“//”作为注释起始。
※ 第一行和最后一行必须是空行或注释,否则可能将被忽略。
※ 命令文件既可以使用 ASCII 文本文件,也可以使用 UNICODE 文本文件。推荐使用 UNICODE 格式。
※ 命令文件所在的目录会被设置为当前目录,这将带来很多方便之处。比如,创建快捷方式的时候,快捷方式目标路径可以使用相对路径。
※ 如果文件路径中的第一个字符是“\”,则自动搜索所有磁盘中的文件,如“LOAD \MyPE\Config.ini”。在此情况下,在 INI 中可以使用环境变量“%CurDrv%”表示当前盘符。
一定要注意!:不要再使用 LOAD XCMD.INI 这样的命令,可能导致递归调用,应该改成 LOAD \XCMD.INI,即指定“\”。
■ EXEC [=][!][@][$]<EXE 路径>[ 参数]
◎ 功能:执行 EXE 程序。
◎ 参数:指定 EXE 路径和参数。前导参数如下(可同时使用,不分先后顺序):
※ 前导“=”表示等待执行完成。
※ 前导“!”表示以隐藏方式执行。
※ 前导“@”表示在后台桌面(WinLogon)执行,彻底隐藏,无法与用户交互,可用于注册“EXEC =@XCMD.EXE CALL SHELL32.DLL,DllInstall,#1,U”。
※ 前导“$”表示修改进程中的关机代码(挂接“ExitWindowsEx”函数)。建议执行“EXEC $EXPLORER.EXE”修改 SHELL 的关机函数,这样执行“开始->关闭系统”的时候就会运行“XCMD.EXE SHUT”命令。
◎ 示例:EXECMD =!CMD.EXE /C "DEL /Q /F %TEMP%"
◎ 备注:SHELL 也是通过此命令来载入的。
■ CALL <DLL 路径>[,函数名称][,[#]参数1][,[#]参数2][,[#]参数3][,[#]参数4]
◎ 功能:调用 DLL 函数。
◎ 参数:指定 DLL 路径、函数名称和参数。如果省略函数名称,将调用“DllRegisterServer”。参数默认为 UNICODE 字符串,如果以“#”前导则表示整数;最多支持四个函数参数。
◎ 示例:CALL SHELL32.DLL,DllInstall,#1,I
◎ 备注:函数必须以 STDCALL 方式导出(不明白什么意思的话,就当没任何问题)。
■ REGI <HKLM|HKCU|HKCR|HKU|HKCC><\子项\>[键值][=[#]数据]
◎ 功能:设置或删除注册表数据。
◎ 参数:
※ 子项 所选 ROOTKEY 下注册表项的完整名。
※ 键值 要操作的键值。如果省略,则操作默认键值;如果为“!”且没有“=”,则用于删除整个子项。
※ 数据 要设置的数据。如果没有“=”则删除。如果前导“#”则表示 REG_DWORD 整数类型的数据,如“#0x20”;如果前导“@”则为 REG_BINARY,如“@23 34 90 255”;否则为字符串。
◎ 示例:REGI HKCU\SOFTWRE\XCMD\Version=#1200
◎ 备注:请命令比较复杂,请仔细看说明。
■ ENVI [$][名称][=值]
◎ 功能:设置或清除环境变量。
◎ 参数:指定环境变量名称和值。前导“$”表示设置系统级环境变量,否则仅设置本程序内部使用的环境变量。如果不指定值,则删除环境变量。如果不指定名称和值,则设置以下环境变量:
Favorites 收藏夹目录
Desktop 桌面目录
StartMenu 开始菜单目录
Startup 启动菜单目录
Programs 程序菜单目录
SendTo 发送到目录
Personal 我的文档目录
QuickLaunch 快速启动目录
◎ 示例:ENVI
◎ 备注:如果使用“EXEC”执行的程序,会自动继承本程序的话境变量,换句话说,如果在命令文件中设置不带“$”的“ENVI”环境变量,对后面的“EXEC”程序中也会有效。
■ FILE <文件路径>[<操作符>[目标路径]
◎ 功能:操作文件或目录。
◎ 参数:指定源文件路径和目标路径,支持通配符,可以用分号同时操作多个文件。操作符“-}”、“=}”分别对应移动、复制,没有操作符则表示删除操作。
◎ 示例:FILE %SystemRoot%\INF\*.INF=}%TEMP%
◎ 备注:如果以 RAMDISK 方式启动系统,可删除一些启动后无用的文件(如删除 2 MB 的 NTOSKRNL.EXE)来增加 RAMDISK 的可写空间。
■ LINK [!]<快捷方式路径><,目标路径>[,运行参数][,图标路径][,图标索引]
◎ 功能:创建快捷方式。
◎ 参数:
※ 快捷方式路径 指定要生成的快捷方式的路径,不需要“.LNK”扩展名。
※ 目标路径 指定快捷方式的目标文件或目录。如果目标不存在,将不会创建快捷方式。如果在命令文件中使用此命令,目标路径可以使用相对路径(相对于命令文件所在路径),如“TOOL\WINRAR\WINRAR.EXE”。
※ 运行参数 目标程序运行参数。
※ 图标路径 快捷方式图标的路径。
※ 图标索引 快捷方式图标的在文件资源中的序号,0 为第一个图标(不填写则默认)。
◎ 示例:LINK !%Desktop%\宽带连接,RASPPPOE.CMD,,RASDIAL.DLL,19
◎ 备注:前导“!”表示以最小化方式启动程序,可用于执行批处理文件时最小化命令窗口。
■ SEND <按键代码1[_|^]>[,按键代码2][,按键代码3]...
◎ 功能:模拟按键。
◎ 参数:虚拟按键代码,如 VK_NUMLOCK,请参相关考编程文档。如果按键代码以“_”结束,则仅模拟按键按下;“^”则仅模拟按键弹起;否则模拟按下并弹起。很生动吧:)
◎ 示例:SEND 0x12_,0x09_,0x09^,0x12^
◎ 备注:上面的示例模拟 Alt+Tab。按键代码支持 16 进制,如“SEND 0x90”表示按下 NumLock 键。
■ WAIT <时间>
◎ 功能:等待指定时间后再继续执行命令。
◎ 参数:指定时间,单位为毫秒。
◎ 示例:WAIT 2000
◎ 备注:比如,可以在执行 SHELL 后等一段时间,然后执行“LOGO”命令关闭登录画面;或者执行其它操作。另外,如果确实需要在登录完成后运行某程序,可以在启动组或“HKCU\Software\Microsoft\Windows\CurrentVersion\Run”中创建快捷方式。
■ KILL <进程名称>
◎ 功能:强制终止指定的进程。
◎ 参数:进程名称,即 EXE 文件名(不包含路径)。
◎ 示例:KILL WinLogon
◎ 备注:此命令将终止与“进程名称”前部分匹配的所有进程,所以如果省略参数,可能将全部进程关闭。
■ SHUT [R]
◎ 功能:关闭计算机。
◎ 参数:指定关闭系统或重新启动。默认为关闭系统。
◎ 示例:SHUT
◎ 备注:可以在“EXEC”命令的时候指定挂接“ExitWindowsEx”函数,配合此命令使用,将可以拦截所有的关闭系统调用,达到正确关闭的目的(注意,此功能是快速关机,可能不会保存所有数据)。
■ DEVI [$]<CAB 路径>
◎ 功能:从 CAB 文件或指定的文件夹中查找并安装驱动程序。
◎ 参数:指定 CAB 文件路径。前导“$”表示解压缩驱动文件后安装驱动,否则不安装驱动。
◎ 示例:DEVI %SystemRoot%\DRV.CAB
◎ 备注:
※ 此命令使用自定的(而非系统的)驱动搜索算法,可快速解压缩可能用到的驱动程序,因此,一个设备可能搜索到多个驱动程序。
※ 在 CAB 中,把每个驱动单独放在一个目录中,并保证 CAB 中 INF 文件总是在当前目录的最前面,且 CAB 中的 INF 文件必须经过处理。建议使用配套程序 XCAB 来制作。
※ INF 文件解压缩到“%SystemRoot%\INF”;SYS 文件解压缩到“%SystemRoot%\SYSTEM32\DRIVERS”DLL 文件解压缩到“%SystemRoot%\SYSTEM32”;其它文件解压缩到“%SystemRoot%”。
※ 如果其它文件需要解压缩到特定目录中,可以在文件名中使用“#”代替目录分隔符,如文件“SYSTEM32#WBEM#MOF#XXX.MOF”将会被解压缩到“%SystemRoot%\SYSTEM32\WBEM\MOF\XXX.MOF”。
※ 此命令还有一个功能:从本地磁盘中搜索驱动,如“DEVI \Windows,Display”。但此命令未完善,会提示驱动文件对话框。因此,本功能暂不提供技术支持。
■ SERV [!]<服务名称>
◎ 功能:启动或停止服务或驱动程序。
◎ 参数:指定服务名称。前导“!”表示停止服务,否则启动服务。
◎ 示例:SERV FBWF
◎ 备注:可以用此命令来启动 FBWF 服务(如果安装了的话),以增加系统盘的可写空间,这样 PE 就能在光盘上运行了。
■ PAGE <页面文件路径> <初始大小> <最大值>
◎ 功能:设置页面文件。
◎ 参数:指定页面文件的路径,只能用 DOS 8.3 格式的路径,如“C:\PageFile.sys”。初始大小和最大值的单位是 MB;初始大小不能小于 100,最大值不能小于初始大小。
◎ 示例:PAGE C:\PAGEFILE.SYS 100 1000
◎ 备注:如果设置了页面文件,则该分区将无法执行格式化等操作。
■ DISP <水平分辨率><,垂直分辨率>[,颜色深度][,刷新率]
◎ 功能:设置显示参数。
◎ 参数:分别指定屏幕参数,如果胜率奖使用原来的设置。
◎ 示例:DISP 1024,768,32,70
◎ 备注:已修正以前在命令文件中使用无效的问题,可直接在命令文件中使用本命令。
■ LOGO [文件路径]
◎ 功能:显示登录画面。
◎ 参数:图片文件路径,支持 BMP/JPG/PNG/GIF 等各式(需要 GDI+ 支持)。如果参数为空,则关闭启动画面(渐隐淡出)。
◎ 示例:LOGO %SystemRoot%\XCMD.JPG
◎ 备注:
※ 此命令为非阻塞模式执行。执行本命令后,将立即执行下一条命令。因此,如果在命令行中使用,程序马上退出,将不能看到效果。
※ 此命令可多次使用。如果你愿意的话,启动过程共可以更换多个不同的图片。
※ 命令文件结束之前,必须调用一次不带参数的“LOGO”命令,以关闭启动画面。
■ TEXT [文字][#颜色][,左][,上][,右][,下]
◎ 功能:在启动画面中显示进度文字。
◎ 参数:文字为空则不显示文字。
◎ 示例:TEXT 正在注册组件……#0xFFDDDD,4,745,128,768
◎ 备注:首次显示文字的时候必须指定位置,否则不会显示。
■ XLOG [文件路径]
◎ 功能:启用日志文件。日志文件可以记录每条命令的执行结果,帮助用户验证命令文件的正确性。
◎ 参数:日志文件路径。
◎ 示例:LOGO %SystemRoot%\XCMD.LOG
◎ 备注:此命令不能在命令行参数中使用(必须在命令文件中使用)。命令文件结束之前,必须调用一次不带参数的“XLOG”命令,以关闭日志文件。公开发布的 PE 中建议不要启用日志文件。
■ HELP
◎ 功能:显示帮助信息。
◎ 参数:无。
◎ 示例:HELP
◎ 备注:不用命令行参数,直接执行本程序,将会自动加载 AUTO.INI 命令文件,如果加载失败,将显示帮助信息。
四、致谢
◎ 感谢 老九 的帮助和建议。
◎ 感谢 无忧论坛网友 的建议。
◎ 感谢 无忧论坛 提供的讨论场所。
◎ 感谢 qinjg8008 的设置虚拟内存源代码。
五、许可
◎ 本程序及其源代码在 GPL 协议许可下发布,您可以从 GNU 网站上获取 GPL 的详细内容。
◎ 您可以复制、分发和传播无限制数量的软件产品,但您必须保证每一份复制、分发和传播都必须是完整和真实的,包括所有有关本软件产品的软件、电子文档,版权和商标宣言。
◎ 作者特此申明对本软件产品之使用不提供任何保证,不对任何用户保证本软件产品的适用性,不保证无故障产生;亦不对任何用户使用此软件所遭遇到的任何理论上的或实际上的损失承担 责任。
◎ 如果您使用本软件,即表示已经默认接受了此协议。
要获取更多信息,请访问 WWW.YONSM.NET
Yonsm
Yonsm@163.com
WWW.Yonsm.NET
2007.1.14,杭州
//XLOG %SystemRoot%\XCMD.LOG
TEXT 正在设定系统参数……#0xFFDDDD,4,745,128,768
LOGO %SystemRoot%\LOGO.JPG
EXIF %SystemDrive%\<32,FILE %SystemRoot%\SYSTEM32\NTOSKRNL.EXE
EXIF MEM<64,EXIF D:\>1024,PAGE D:\PAGEFILE.SYS 128
EXIF MEM<64,EXIF !D:\PAGEFILE.SYS,PAGE C:\PAGEFILE.SYS 128
ENVI
// 取消安装未经签名的驱动程序警告
//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
// 设置系统用户文件夹路径
//REGI HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common AppData=%ALLUSERSPROFILE%\Application Data
//REGI HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Desktop=%ALLUSERSPROFILE%\桌面
//REGI HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Favorites=%ALLUSERSPROFILE%\Favorites
//REGI HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Programs=%ALLUSERSPROFILE%\「开始」菜单\程序
//REGI HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Start Menu=%ALLUSERSPROFILE%\「开始」菜单
//REGI HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Startup=%ALLUSERSPROFILE%\「开始」菜单\程序\启动
//REGI HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Common Templates=%ALLUSERSPROFILE%\Templates
// 设置系统语言
//REGI HKLM\System\CurrentControlSet\Control\Nls\Language\Default=0804
//REGI HKLM\System\CurrentControlSet\Control\Nls\Language\InstallLanguage=0804
//REGI HKLM\System\CurrentControlSet\Control\Nls\Locale\=00000804
// 设置部分程序的临时文件夹路径
//REGI HKLM\Software\Microsoft\Windows\CurrentVersion\Advanced INF Setup\AdvPackLogFile=%TEMP%
//REGI HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\LogPath=%TEMP%
//REGI HKLM\System\CurrentControlSet\Control\NTMS\NtmsData=%TEMP%
// 修正 USB 驱动程序文件路径
REGI HKLM\System\CurrentControlSet\Services\USBHUB\ImagePath=System32\Drivers\USBHUB.SYS
REGI HKLM\System\CurrentControlSet\Services\USBCCGP\ImagePath=System32\Drivers\USBCCGP.SYS
REGI HKLM\System\CurrentControlSet\Services\USBEHCI\ImagePath=System32\Drivers\USBEHCI.SYS
REGI HKLM\System\CurrentControlSet\Services\USBOHCI\ImagePath=System32\Drivers\USBOHCI.SYS
REGI HKLM\System\CurrentControlSet\Services\USBSTOR\ImagePath=System32\Drivers\USBSTOR.SYS
REGI HKLM\System\CurrentControlSet\Services\USBUHCI\ImagePath=System32\Drivers\USBUHCI.SYS
// 设置桌面墙纸
//REGI HKCU\Control Panel\Desktop\Wallpaper=%SystemRoot%\WALL.JPG
// 注册 FinalData
REGI HKLM\Software\FinalData\FinalData\2.0.1.1028\Name=Yonsm
REGI HKLM\Software\FinalData\FinalData\2.0.1.1028\Company=Yonsm.NET
REGI HKLM\Software\FinalData\FinalData\2.0.1.1028\Serial=NTC39431-1331-015781430379
// 注册 UltraISO
REGI HKCU\Software\EasyBoot Systems\UltraISO\5.0\UserName=Yonsm
REGI HKCU\Software\EasyBoot Systems\UltraISO\5.0\Registration=f8afe7d9aebeb6a9d6aaa3b2a4e2ce99
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
// 禁止 Windows 漫游提示,删除控制面板中网络连接和管理工具文件夹
REGI HKLM\Software\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad\PostBootReminder=
REGI HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\{7007ACC7-3202-11D1-AAD2-00805FC1270E}\!
REGI HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\{D20EA4E1-3957-11d2-A40B-0C5020524153}\!
TEXT 正在创建快捷方式……
LINK %Desktop%\本地连接,PENETCFG.EXE
LINK !%Desktop%\宽带连接,RASPPPOE.CMD,,SHELL32.DLL,14
LINK %QuickLaunch%\Windows 资源管理器,EXPLORER.EXE,,EXPLORER.EXE,1
LINK %QuickLaunch%\记事本,NOTEPAD.EXE
LINK %Programs%\附件\画图,MSPAINT.EXE
LINK %Programs%\附件\记事本,NOTEPAD.EXE
LINK %Programs%\附件\计算器,CALC.EXE
LINK %Programs%\附件\命令提示符,CMD.EXE
LINK %Programs%\附件\注册表编辑器,REGEDIT.EXE
LINK %Programs%\附件\资源管理器,EXPLORER.EXE,,EXPLORER.EXE,1
LINK %Programs%\实用工具\Opera,TOOL\OPERA\OPERA.EXE
LINK %Programs%\实用工具\UltraEdit,TOOL\ULTRAEDIT\UEDIT32.EXE
LINK %Programs%\实用工具\UltraISO,TOOL\ULTRAISO\ULTRAISO.EXE
LINK %Programs%\实用工具\WinHEX,TOOL\WINHEX\WINHEX.EXE
LINK %Programs%\实用工具\WinRAR,TOOL\WINRAR\WINRAR.EXE
LINK %Programs%\实用工具\极点中文,TOOL\FREEWB\REGISTRY.EXE
LINK %Programs%\实用工具\虚拟磁盘,TOOL\VDRIVE\VDRIVE.EXE
LINK %Programs%\系统工具\磁盘分区,TOOL\WINPM\WINPM.EXE
LINK %Programs%\系统工具\克隆多播,TOOL\GHOST\GHOSTSRV.EXE
LINK %Programs%\系统工具\克隆浏览,TOOL\GHOST\GHOSTEXP.EXE
LINK %Programs%\系统工具\克隆精灵,TOOL\GHOST\GHOST32.EXE
LINK %Programs%\系统工具\文件恢复,TOOL\FINALDATA\FINALDATA.EXE
LINK %Programs%\系统工具\系统检测,TOOL\EVEREST\EVEREST.EXE
LINK %Programs%\应急工具\目标系统选择,TOOL\ERDCMD\ERDROOT.EXE,,SHELL32.DLL,21
LINK %Programs%\应急工具\系统管理工具,TOOL\ERDCMD\COMPMGMT.EXE
LINK %Programs%\应急工具\用户密码恢复,TOOL\ERDCMD\LOCKSMITH.EXE
LINK %Programs%\应急工具\注册表编辑器,TOOL\ERDCMD\REGEDIT.EXE
TEXT 正在加载外部设置……
LOAD \XCMD.INI
TEXT 正在载入用户桌面……
LOGO
EXEC $EXPLORER.EXE
//TEXT 正在检测驱动程序……
DEVI %SystemRoot%\NETDRV.CAB
EXIF %SystemDrive%\<32,FILE %SystemRoot%\NETDRV.CAB
//TEXT 正在清理文件进程……
WAIT 5000
EXIF %SystemDrive%\<32,FILE %SystemRoot%\TXTSETUP.SIF
EXIF %SystemDrive%\<32,FILE %SystemRoot%\LOGO.JPG
KILL SMSS
KILL WINLOGON
//XLOG
原帖由 qaqa5858 于 2007-1-7 10:06 PM 发表
Yonsm你真的很厉害啊!我已经把我的MP3做成了,现在能上网了!谢谢!就是慢了点!
原帖由 lxl1638 于 2007-1-7 10:20 PM 发表
Yonsm,能否在此基础上做出一个PE2.0的Logon,载入Vista的Explorer.exe?
原帖由 acoa 于 2007-1-7 10:18 PM 发表
老大,我的外置程序和XCMD.INI都在U盘根目录下,启动后外置程序所在的盘为D:(不定,有可能是E:),那么外置程序的LINk该怎写?
原帖由 strongchen 于 2007-1-7 10:24 PM 发表
终于等到了,好好研究一下。
原帖由 Yonsm 于 2007-1-7 10:28 PM 发表
看说明,LOAD XCMD.INI (名字请随便),没有指定盘符的话,会自动搜索盘符的。在INI中,使用 %CurDrv% 环境变量代表盘符。
如:LINK %Desktop%\我的快捷方式,%CurDrv%\Program Files\Haha\MyTool.exe
明 ...
原帖由 acoa 于 2007-1-7 11:02 PM 发表
已搞定。跟那个RXPE还是有点不同,原来我直接用RXPE INIT就可以自动找到RXPE.INI文件,但现不行,必须用XCMD INIT XCMD.INI才能自动找到XCMD.INI文件,那个%CurDRv%变量才会生效,现用在老九的元旦版上跟老九的 ...
原帖由 acoa 于 2007-1-7 11:20 PM 发表
老大,XCMD检测驱动时间要比RXPE要慢了好几秒呢。
未命名.PNG (25.23 KB, 下载次数: 304)
原帖由 acoa 于 2007-1-7 11:20 PM 发表
老大,XCMD检测驱动时间要比RXPE要慢了好几秒呢。
原帖由 lxl1638 于 2007-1-7 11:34 PM 发表
试验报告,内核目录改为I386可以启动了,但所有的开始菜单丢失,快捷方式是创建了的。
原帖由 acoa 于 2007-1-7 11:20 PM 发表
老大,XCMD与RXPE相比,缺点就是检测驱动时间要比RXPE要慢了好几秒呢。
原帖由 lxl1638 于 2007-1-7 11:34 PM 发表
试验报告,内核目录改为I386可以启动了,但所有的开始菜单丢失,快捷方式是创建了的。
原帖由 Yonsm 于 2007-1-7 11:43 PM 发表
我想到好的解决方法了,哈哈:在 INI 中,把 检测硬件的操作放在 EXEC $EXPLORER.EXE 后面,那样的话,哈哈,相当于在后台检测了,不用等待,OK,就这样!
原帖由 Yonsm 于 2007-1-7 11:35 PM 发表
我知道了,原来是这样:昨天的版本,驱动搜索的时候,仅比较大写。今天的版本忽略大小写的,所以时间花销特别大。
我想想办法,还是把INF中的 Device ID都变成大写好啊。
老九也在做着个吧,要是看到了这 ...
原帖由 acoa 于 2007-1-7 11:46 PM 发表
我是这样做的,虽然很快出现桌面,但是桌面的图标要等到检测完才出现。
还有,INI文件最后的那个LOGO用来干什么呢?
原帖由 strongchen 于 2007-1-7 11:47 PM 发表
有没有工具可以批量把 inf中的 小写都变成大写?这样只要对inf做了处理就可以用了。
最好做一个工具,把指定目录下的所有inf文件(包括子目录)自动改名(加0开头),把小写升级为大写。
这样处理驱动就 ...
原帖由 Yonsm 于 2007-1-7 11:50 PM 发表
看帮助啊,没有参数的 LOGO 命令,表示关闭启动画面。
你还需要改进的地方 :把 LOGO 命令放到 EXEC $EXPLORER.EXE 之前,这样就能很快出来图标了。
就是说,在启动 SHELL 之前就发送关闭启动画面的命令, ...
原帖由 acoa 于 2007-1-7 11:46 PM 发表
我是这样做的,虽然很快出现桌面,但是桌面的图标要等到检测完才出现。其实根本不是什么问题,已经很完美了。虽慢一点(3秒),但维护嘛,最主要是能装上驱动。
还有,INI文件最后的那个LOGO用来干什么呢?
原帖由 strongchen 于 2007-1-7 11:58 PM 发表
发现偶的pe没有这个问题。。。我的pe是启动网络的时候才检测驱动的。。。^_^
原帖由 Yonsm 于 2007-1-7 11:56 PM 发表
把 LOGO 命令提前,提前到 EXEC $EXPLORER.EXE 之前;DEVI 命令置后,放到最后面。
试过了吧,非常好的效果!好好好,谢谢你提出这个问题。
原帖由 acoa 于 2007-1-8 12:03 AM 发表
老大,你太太强了,这样的话,比原来的RXPE都要快。
这样的话要是再加上自动把INF文件前面加0的代码,就完美得没话说了。
原帖由 Yonsm 于 2007-1-8 12:02 AM 发表
这个不是问题,这个是策略。
你的是因为在 Shell 启动后,继续执行的 XPEInit 来载入你的 BAT 的,完全不一样的。但其实也是在 Shell 启动后来检测的。
ERROR.JPG (70.05 KB, 下载次数: 233)
原帖由 strongchen 于 2007-1-8 12:14 AM 发表
DEVI %SystemRoot%\NETDRV.CAB
这句命令跟 xpeinit.exe -8 "bartpe.exe -pnp -cn WinXPE -wg WORKGROUP"
有很大的区别,DEVI %SystemRoot%\NETDRV.CAB是从NETDRV.CAB中找出网卡相应的驱动
bartp ...
原帖由 acoa 于 2007-1-8 12:27 AM 发表
各位老大,我在devi显卡驱动后,运行bartpe -pnp时,出来这个错误,该怎么解决呢。网卡就没这个问题。
原帖由 Yonsm 于 2007-1-8 12:27 AM 发表
安装驱动是很简单的事情:UpdateDriver 一条 API 就够了,我仔细想想取消掉了,毕竟启动的时候没必要安装驱动,如果要,也可以用BartPE来做。
能够从 CAB 中解压缩分析驱动,不是更好吗?用了就可以删除掉 ...
CMD_FBWF, CMD_PAGE, CMD_UPDV,CMD_DISP
分别是:设置FBWF、设置页文件、更新驱动、设置显示。
原帖由 lxl1638 于 2007-1-8 12:45 AM 发表
希望老大加多一组(4条)命令,本人的建议:
刚好多一组,加上原来的共20条。这样很多工具,包括本人原来做的那些体积大的工具都可以不要了。
原帖由 Yonsm 于 2007-1-8 12:55 AM 发表
暂时先放放,下周末看看。其中“CMD_UPDV”是什么东西?更新驱动?FBWB 应该换成 CMD_SERV 来启动某个服务好了
另外,源代码或者可以分析的程序能收收集一下?没有参考的话要去找资料很费时间。有EXE也可以 ...
原帖由 acoa 于 2007-1-8 12:57 AM 发表
你要的这些东东老九刚好有。;P
原帖由 acoa 于 2007-1-8 08:11 AM 发表
这工具真是好,再顶一下。 代替xpeinit等命令后,“ 我的电脑”右键菜单里的“ 管理”项又出来了。原来我 还一直以为是注册表问题, 但注册表相关的项又是存在 的,现在终于明白 是xpeinit的BUG
原帖由 Yonsm 于 2007-1-8 01:01 AM 发表
嘿嘿,其实我知道有,只是假装问一下,意思是不知道他肯不肯嘛……
我又更新了 RXPE,重新上传了,你可以看看启动速度。这下快了……
1.JPG (7.13 KB, 下载次数: 240)
原帖由 lxl1638 于 2007-1-8 11:04 AM 发表
其实你也有了,是一些很简单的事,如果想参考的可以找重编译XPEINIT的大师,他做了一个小工具(设置FBWF、虚拟内存等4项)最合适你用,是VC源码。本人的是Delphi源码,如果需要,本人也可帖上来(只能帖Pascal源 ...
原帖由 123 于 2007-1-8 12:43 PM 发表
看起来很不错,研究研究代码。只是在我这里有点小错误,不知是什么原因。
原帖由 acoa 于 2007-1-8 12:27 AM 发表
各位老大,我在devi显卡驱动后,运行bartpe -pnp时,出来这个错误,该怎么解决呢。网卡就没这个问题。
原帖由 acoa 于 2007-1-8 01:41 PM 发表
我在bartpe之前用infcache处理了一下INF目录,就没问题了。
.OPTION EXPLICIT
.Set InfFileName="D:\Data\Temp\WinCAB.INF"
.Set RptFileName="D:\Data\Temp\WinCAB.RPT"
.Set DestinationDir=
.Set CabinetName1="Default.cab"
.Set CabinetNameTemplate="Default*.cab"
.Set DiskDirectoryTemplate="D:\"
.Set UniqueFiles=OFF
.Set FolderSizeThreshold=2147483648
.Set MaxDiskSize=0
.Set Cabinet=on
.Set Compress=on
.Set CompressionType=LZX
.Set CompressionMemory=21
"D:\VGADRV\ATI\0CX_29124.INF" "ATI\0CX_29124.INF"
"D:\VGADRV\ATI\ATI2CQAG.DLL" "ATI\ATI2CQAG.DLL"
"D:\VGADRV\ATI\ATI2DVAG.DLL" "ATI\ATI2DVAG.DLL"
"D:\VGADRV\ATI\ATI2MTAG.SYS" "ATI\ATI2MTAG.SYS"
"D:\VGADRV\INTEL\0INTELDISP.INF" "INTEL\0INTELDISP.INF"
"D:\VGADRV\INTEL\IALMDD5.DLL" "INTEL\IALMDD5.DLL"
"D:\VGADRV\INTEL\IALMDEV5.DLL" "INTEL\IALMDEV5.DLL"
"D:\VGADRV\INTEL\IALMDNT5.DLL" "INTEL\IALMDNT5.DLL"
"D:\VGADRV\INTEL\IALMNT5.SYS" "INTEL\IALMNT5.SYS"
"D:\VGADRV\INTEL\IALMRNT5.DLL" "INTEL\IALMRNT5.DLL"
"D:\VGADRV\NVIDIA\0NV4_DISP.INF" "NVIDIA\0NV4_DISP.INF"
"D:\VGADRV\NVIDIA\NV4_DISP.DLL" "NVIDIA\NV4_DISP.DLL"
"D:\VGADRV\NVIDIA\NV4_MINI.SYS" "NVIDIA\NV4_MINI.SYS"
原帖由 Yonsm 于 2007-1-8 02:05 PM 发表
OK,我明白了。马上怎加一条命令或者工具,用于自动打包生成驱动,不再需要改名、InfCacheBuild 什么的了。
自动:
修改文件中的 CopyFiles;保证直接安装成功。
修改文件中的 DeviceID 为大写;提高驱动搜索 ...
原帖由 kafen 于 2007-1-8 03:33 PM 发表
请问:#include <Windows.h>
Windows.h没有呀?
原帖由 strongchen 于 2007-1-8 04:30 PM 发表
wincab其实生产一个脚本让makecab制作cab文件而已。不过好像不支持目录。。。
我现在用cabman生产cab文件。这个软件比较傻瓜。。
原帖由 wanghh 于 2007-1-8 05:13 PM 发表
谢谢!请问源代码用什么工具打包成EXE文件?
原帖由 wanghh 于 2007-1-8 05:38 PM 发表
谢谢123老兄!可有下载链接?
原帖由 123 于 2007-1-8 05:49 PM 发表
3.13G你也要?
原帖由 wanghh 于 2007-1-8 06:49 PM 发表
可怕啊!这么大!有没有100MB左右的。用易语言只有几十MB
原帖由 acoa 于 2007-1-8 11:35 PM 发表
用了这个工具在元旦版后,好像对方就不能访问PE所在的机器了,不知有谁试过没?提示没有权限。而用原有的元旦版就可以访问。
原帖由 zhaohj 于 2007-1-8 10:58 PM 发表
搞一个功能,搜索本机上XP的网卡显卡驱动并可保存,这样以后驱动就可用自己打包了。
原帖由 Yonsm 于 2007-1-8 11:47 PM 发表
正在做,XCAB
原帖由 Yonsm 于 2007-1-8 11:46 PM 发表
我测试过可以呀
46.04 KB, 下载次数: 276, 下载积分: 无忧币 -2
VC6 SP5 可编译的版本
原帖由 acoa 于 2007-1-8 11:50 PM 发表
那该怎么操作呢?我已启用了SERVER服务,并使用了net user administrator 1111命令
原帖由 strongchen 于 2007-1-8 11:50 PM 发表
我也提个要求,加入从现有xp寻找驱动并复制到pe,如何?
原帖由 Yonsm 于 2007-1-8 11:54 PM 发表
VC6 SP5 可编译。老九请在此下载。
另外说句题外话,要做这样的程序,除了 VC+++++,其他开发工具明显不太合适。因为不够Native。用Delphi什么Windows API都用得来的人,花两天时间看看 C++ 语法,搞这个应该很 ...
原帖由 lxl1638 于 2007-1-9 12:17 AM 发表
更晕了,原来的程序编译时只有一个错误(欠CfgMgr32.h,的确,Include目录没有这个文件),现在是一大堆,30多个,本人的VC++6.0 SP6。
看来转VC太难了。
原帖由 Yonsm 于 2007-1-9 12:21 AM 发表
Visual Studio 6.0 SP6 不支持 内联汇编,我使用了汇编来修改内存中 USER32.DLL 的关机代码,让他来调用 XCMD.EXE 的关机命令。
e...我想想,到底 SP6 不支内联汇编,还是不支持 MMS/SSE/SSE2 intrinsic 指 ...
--------------------Configuration: XCMD - Win32 Debug--------------------
Compiling...
XCMD.cpp
WARNING: Could not detect device driver state in Visual C++ 6.0!
E:\C++教程\XCMD-VC6\XCMD.cpp(187) : error C2664: 'SetupIterateCabinetA' : cannot convert parameter 3 from 'unsigned int (void *,unsigned int,unsigned long,unsigned long)' to 'unsigned int (__stdcall *)(void *,unsigned int,unsigned int,unsigned int)'
None of the functions with this name in scope match the target type
E:\C++教程\XCMD-VC6\XCMD.cpp(822) : error C2065: 'ULONG_PTR' : undeclared identifier
E:\C++教程\XCMD-VC6\XCMD.cpp(822) : error C2065: 'puToken' : undeclared identifier
E:\C++教程\XCMD-VC6\XCMD.cpp(822) : error C2059: syntax error : 'const'
E:\C++教程\XCMD-VC6\XCMD.cpp(823) : error C2146: syntax error : missing ')' before identifier 'uToken'
E:\C++教程\XCMD-VC6\XCMD.cpp(823) : error C2165: 'left-side modifier' : cannot modify pointers to data
E:\C++教程\XCMD-VC6\XCMD.cpp(823) : error C2071: 'PGdiplusShutdown' : illegal storage class
E:\C++教程\XCMD-VC6\XCMD.cpp(823) : error C2059: syntax error : ')'
E:\C++教程\XCMD-VC6\XCMD.cpp(835) : error C2146: syntax error : missing ';' before identifier 's_uToken'
E:\C++教程\XCMD-VC6\XCMD.cpp(835) : error C2065: 's_uToken' : undeclared identifier
E:\C++教程\XCMD-VC6\XCMD.cpp(841) : error C2146: syntax error : missing ';' before identifier 'pGdiplusStartup'
E:\C++教程\XCMD-VC6\XCMD.cpp(841) : error C2065: 'pGdiplusStartup' : undeclared identifier
E:\C++教程\XCMD-VC6\XCMD.cpp(877) : error C2146: syntax error : missing ';' before identifier 'GetProcAddress'
E:\C++教程\XCMD-VC6\XCMD.cpp(1128) : error C2664: 'DialogBoxParamA' : cannot convert parameter 4 from 'long (struct HWND__ *,unsigned int,unsigned int,long)' to 'int (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)'
None of the functions with this name in scope match the target type
执行 cl.exe 时出错.
XCMD.exe - 1 error(s), 0 warning(s)
原帖由 lxl1638 于 2007-1-9 12:24 AM 发表
欢迎光临 无忧启动论坛 (http://wuyou.net/) | Powered by Discuz! X3.3 |