这几天研究这几个玩意儿,弄得头大,做个记录吧。
一、winpeshl.exe, 微软自带,有自己的脚本 winpeshl.ini 用于初始化winpe ,程序名称是 WinPE Shell, 应该是用于初始化winpe 外壳用的。核心是调用 wpeinit.exe 。
二、wpeinit.exe ,微软自带,用于初始化 winpe ,程序名称是 WinPE Initialization Program。
三、wpeutil.exe,微软自带,用于设置winpe ,程序名称:WinPE Utilities (Console) ,
功能:初始化网络组件和驱动,设置页面文件,语言设置,重启,关机,更新注册表中关于启动信息的一些内容,关闭或开启网络防火墙等
四、netcfg.exe,微软自带,用于设置 网络,程序名称:WinPE network installer,
主要功能是附带参数 -winpe ,为 Windows 预安装环境安装 TCP/IP、NetBIOS 和 Microsoft 客户端
还有安装网络服务
五、pecmd 的 init 指令,是 pecmd.exe 自带的指令,用于初始化 winpe ,如果紧跟 shel explorer.exe 指令,就可以得到一个 最简单的 winpe 桌面环境。
由于各种定制的 winpe 版本不同,组件不同,需求不同,用 微软提供的 winpe 初始化命令往往达不到效果,还可能互相冲突。
实践中发现 winpeshl.exe 往往不太灵光,直接调用 wpeinit.exe 也会有 卡顿失灵,通过wpeutil.exe 初始化网络也会因为 网卡驱动不上,等待网址分配等导致网络组件加载卡顿甚至失败,
而且,有时候,也不知道 wpeinit 初始化 到底卡在什么位置,wpeinit进程就是不运行完。此时如果在用 wpeutil 初始化网络,也可能卡在那。
所以,更多时候,自定义的 winpe 都是选择手动完成 网络初始化。常用的手段就是
通过 pecmd 的 init 实现winpe 的初始化,
用 drvload.exe 安装网卡驱动,
然后通过 netcfg.exe 为winpe 安装组件和服务,
用 net start开启服务,
用 ”wpeutil.exe InitializeNetwork /NoWait “ 查缺补漏 的 初始化一下网络
用 pecmd 的 shel 指令完成 explorer.exe 的桌面外壳装入。
需要注意的是 用 wpeutil.exe InitializeNetwork 初始化网络,如果不带 /nowait 参数,在没有获得网络地址前,这个进程是不会完成的,而要想关闭防火墙,又必须在这个命令以后进行,不然初始化时会再把防火墙打开。
还有就是,wpeutil.exe InitializeNetwork /nowait 初始化网络会有偶发性的卡顿,如果这个命令还没有结束,就设置关闭防火墙,很可能会关不上。
wpeutil.exe InitializeNetwork [/NoWait]
初始化网络组件和驱动程序,并将计算机名称设置为随机选择的值。如果省略 "/NoWait",将阻止此命令,直至获取网络地址。