|
你们都能看懂PECMD的代码,lua的代码应该更容易理解才对。
你添加到OSInit()中, 初始化就卡住了,启动桌面的代码不会运行。
pecmd.lua通常的流程与pecmd.ini一样,
OSInit()
PreShell()
Shortcuts()
LoadShell()
PostShell()
但是带Admin用户的时候,不像PECMD需要2份不同配置,pecmd.lua只用1份,
其实被调用了2次,所以不太好懂吧。
作为 PE的启动管理器:
pecmd.lua
main()
loader()
OSInit()
exec('winpeshl.exe')
exec('drvload.exe display.inf') -- 加载基本显卡驱动
Screen:DispTest({'1152x864', '1366x768', '1024x768'}) -- 自动设置可用分辨率
--
os.setenv('logon_script', script_file) -- 设置登录脚本仍然为pecmd.lua
exec('/wait', 'WinXShell.exe -ui -jcfg UI_LogonPE.jcfg') -- 启动用户登录进程
exec('/wait /hide', 'cmd.exe /k echo alive') -- 启动一个隐藏cmd卡住启动管理器进程不退出,PE就不重启了。
作为 PE的登录脚本:
pecmd.lua
main()
if _G.caller == 'UI_Logon' then
logon_user = _G.logon_user -- ★从 UI_Logon.zip 界面传递过来的选择用户(SYSTEM 或者 Administrator)
-- (此处省略如果是Admin的话,进行管理员用户的准备(InitAdmin()函数),也就是pecmdAdmin.ini的内容)
Logon() -- 登录,相当于pecmd.ini,不过lua可以把过程的处理信息反映到登录界面上(改图改字改大小,添加动画等等)。
+PreShell()
+Shortcuts()
+LoadShell()
+PostShell()
end
上面说了启动器的步骤,和PECMD按大功能分工混合使用的话,其实有很多种组合。
- LUA全包(加载器+登录处理) ★ WimBuilder提供选项
- PECMD全包(加载器+登录处理) ★ WimBuilder提供选项(默认选项)
- LUA加载器+LUA仅登录界面+PECMD登录处理 ★1
- LUA加载器+PECMD登录处理
- PECMD加载器+LUA登录处理
- PECMD加载器+LUA仅登录界面+PECMD登录处理 ★2
针对你只想用LUA的登录界面的话,说明下★1,★2组合的修改方法:
★1:
a.WimBuilder2的启动管理器选择LUA。
b.pecmd.lua中获取到登录用户名后,直接调用PECMD接管,不执行自己的Logon()。
说的有点多,直接可以跑的★1补丁(下载,替换_CustomFiles_\final.bat构建即可):
[attach=final.bat1.zip]
选择了新的LUA加载器的话,就没必要用PECMD做登录处理了。。。(这个模式不提供补丁,自己做吧)
★2:
a.WimBuilder2的启动管理器选择PECMD。(默认此选项,其实什么也不用做)
b.pecmdadmin.lua中,把很LOW的PECMD提示对话框,改成
调用WinXShell.exe -ui -jcfg X:\PEMaterial\UI_LogonPE.jcfg
pecmd.lua根据logon_user是SYSTEM还是Administor退出码设置1或2,让pecmdadmin.ini接收。
说的有点多,其实改1行lua,7行PecmdAdmin.ini就好了,
直接可以跑的★2补丁(下载,替换_CustomFiles_\final.bat构建即可):
final.bat.zip
(636 Bytes, 下载次数: 18)
|
|