跳转至主要内容

晴雨技术笔记

自制 Windows PE(三):在 PE 中上网

杏川铭心 杏川铭心
发表于 2025年7月18日

上次我们提到了怎么给 Windows PE 添加图形界面,这次我们重点来讲一下怎么在 PE 里面上网。

事实上 PE 里面是有自带的有线网的,不过默认情况下没有配置,而且驱动不一定好使,也没有自带很多网络工具。所以在 PE 里面上网,主要是这些东西:驱动、工具(例如 curl 或者浏览器,以及配置工具)、WiFi。


本文是本站自制 Windows PE 系列教程的第三篇,其他篇目可以在下方找到:


添加驱动

在 PE 里面添加驱动,可以选择固化驱动,即挂载映像,安装驱动,提交;也可以选择在运行时安装,当然这种方式重启之后是不能保留的。

固化驱动

还是老规矩,先挂载映像(不会的回第一篇去看),然后运行:

dism /Add-Driver /Image:C:\WinPE\mount /Driver:<驱动程序>.inf

Windows 下的驱动程序安装是由 .inf 文件控制的,因此我们指定的都是 INF 文件。不要想着直接指定一个 .sys 文件来安装。

如果想要直接安装一个文件夹里面的所有驱动时,可以执行:

dism /Add-Driver /Image:C:\WinPE\mount /Driver:<驱动程序文件夹> /Recurse

重点就是 /Recurse 这个参数。另外,这次指定的可就不是单个文件了,是整个文件夹了。

如果手头没有 .inf 格式的驱动,也可以从本机进行提取:

dism /Online /Export-Driver /Destination:<目标文件夹>

注意不要忘了 /Online 参数,这个是告诉 DISM 要操作的是正在运行的这个 Windows 系统。

完成之后别忘记提交更改,生成 ISO。

运行时安装

WinPE 里面自带了一个 drvload 程序,可以让我们在系统运行时添加一些驱动程序。当然,那种需要重启完成安装的就没辙了,但是磁盘驱动,网卡驱动等,一般都可以这样直接加载运行。(Windows 安装时会有一个“加载磁盘驱动程序”的功能,就是通过类似这种方式实现的。)

语法也很简单:

drvload <驱动程序>.inf

不需要加什么参数(事实上 drvload 也没有参数可以用),直接跟上 INF 文件的路径就行了。

添加网络工具

接下来就需要添加网络工具了,需要两个东西,一个是网络配置工具,还有一个就是网络使用工具(浏览器说的这么高大上……)。

PENetwork

PENetwork 是一个功能强大的 PE 网络管理工具,基本上实现了原生 Windows 里所有重要功能,可以实现配置 IP 地址,连接 WiFi,配置防火墙等工作。

下载之后,把 PENetwork 放到一个你记得住的地方,比如 Program Files。下载下来应该是这些东西:

PENetwork 主程序。

接下来需要让 PENetwork 在开机时自启动。我们打开 PECMD.INI,添加下面这行:

EXEC X:\Program Files\PENetwork\PENetwork.exe /autostart

/autostart 是 PENetwork 的一个参数,允许 PENetwork 在用户不做任何操作的时候就能自动开始配置。

为了方便我们后续再次打开 PENetwork,我们还可以在开始菜单或者桌面上创建一个图标,同样在 PECMD.INI 里面添加:

LINK X:\ProgramData\Microsoft\Windows\Start Menu\Programs\PENetwork,X:\Program Files\PENetwork\PENetwork.exe

这样就可以在开始菜单里面看到 PENetwork 了:

开始菜单里的 PENetwork。
好吧,我承认,我偷了个懒,写第二篇的时候我就已经把 PENetwork 装上了,这就是上次的图

开机时应该可以看到 PENetwork 的主界面:

PENetwork 主界面。

随便 ping 个网站试试:

ping 测试成功。

可以看到确实连上网了。

添加网络使用工具

正常情况下我们肯定是用浏览器比较舒服的,但是呢,我上网找了一圈,也没有找到一个 PE 能用的浏览器,要么就是跑不起来,要么就是下载要花什么论坛积分,没办法,这里我只好退而求其次,放一个 curl 进去,作为一个基本的工具,作为一个命令行下的下载工具,也是有一点用处的。(明明就是自己水平不行嘛……)

curl.exe 在比较新的 Windows 里面都是自带的,千万不要以为这只是一个 Linux 命令哦,不信你看一下 System32 文件夹,就可以找到这个软件了:

Windows 下的 curl.exe。

往 PE 里面添加也很简单,直接拷进去就行了,这个东西不需要很复杂的库,PE 正常情况下都是有的。

测试一下:

在 WinPE 中运行 curl。

可以看到 curl 已经添加成功了。

支持 WiFi

这个东西,其实如果不是刚需的话,不需要太勉强。

这倒不是因为 PE 不支持 WiFi,实际上官方是给出了对于 WinPE-WiFi 这个包的介绍的,除了……你自己不能安装这个包,只有官方的 WinRE 才有这个东西。

检查一下官方的 WinRE 映像会发现确实有 WinPE-WiFi 这么个东西:

WinPE-WiFi 包。

那么添加 WiFi 就有两条路可以走,一种就是直接拿官方的 WinRE 映像来制作 PE,一种就是手动添加 WiFi 相关的文件。

用官方 WinRE 制作

(话说我到快结束的地方才提这么个事情是不是有点坑爹啊……)

官方的 WinRE 在两个地方都有,一个是 C:\Recovery\WindowsRE\Winre.wim,还有一个在“恢复分区”里,就是磁盘管理里面这个东西:

磁盘管理中的恢复分区。

把这个 Winre.wim 拿到手之后,就可以直接替换掉官方 PE 中 \media\sources\boot.wim 这个文件,这样后续也可以直接使用官方的 MakeWinPEMedia 脚本来创建启动媒体。

不过 Winre.wim 默认启动的是 recenv.exe 这么个东西,倒不是说启动程序不能改,但是里面似乎是少了两个 DLL,也是和 WiFi 有关,没有这两个东西,你只能连上本机已有的 WiFi,但是不能用 netsh wlan 来新建 WiFi 连接。

把下面这两个文件拷进 PE 的 System32 文件夹里面:

  • dmcmnutils.dll
  • mdmregistration.dll

这样 PENetwork 就可以开始连接 WiFi 了,如图(为了测试 WiFi,我是拿笔记本直接实机启动,所以截不了图,抱歉):

同样随便 ping 一个网站试试:

可以看到确实连上 WiFi 了。

对比一下普通的 PE,会发现,普通的 PE 就是没有 WiFi 的,PENetwork 中会直接告诉你没有安装,而不是未启动(PE 默认不启动 WiFi 服务)。

PENetwork 提示 WiFi 未安装。
抱歉哈前面两期那个原版 PE 被我玩炸了所以说这是个新的

不过用 WinRE 制作,也不是没有副作用,其中一个就是桌面上依然不会显示此电脑,哪怕你把用户文件夹改到 X:\Users\Default 也不行,而且 WinRE 这个映像是没办法设置语言的,会报错。

手动添加

WiFi 是个非常复杂的东西,所以 WiFi 功能所涉及到的文件也非常的多。

这个方法,是 TenForums 上的一个帖子里给出的,代码在三楼。

这是个 Powershell 脚本,因此需要先设置脚本运行策略。脚本很长,建议先读明白,把各个变量设置好,同时不要忘了把 en-US 换成 zh-CN,除非你真的很想用英文。

脚本里面是有注册 wlansvc 这个服务的部分的,因此可以在 PECMD.INI 里面加上这么一行:

EXEC net start wlansvc 

这样就可以做到在开机时自动启动 WiFi 了。

不过我测试的时候似乎还是有些问题,提示没有签名,不允许启动,PENetwork 虽然读到了 WiFi 有安装,但是也是没办法启动的。原帖似乎也遇到了同样的问题,不知道和我用的 Windows 版本不一致有没有关系(我本机是 17763,PE 是 19041)

给大家看截图:

Windows PE 手动添加 WiFi 无效。

我承认,我没有警力去研究这个了。就拿 WinRE 用吧,虽然 WinRE 生成出来的那个 ISO 大得吓人……

我没研究过 Windows 精简,所以说 emmm……

结语

本次我们了解了在 PE 中上网的基本操作,下一期(不出意外的话也是最后一期)我们就来介绍一下怎么把做好的这个 PE 装进 U 盘或者已有系统。

延伸阅读

本文是本站自制 Windows PE 系列教程的第三篇,其他篇目可以在下方找到:

杏川铭心
杏川铭心

名字越改越尬,但是网站一点没动🤪 曾用名Frank419(现在也是我在很多地方的用户名),网站站长。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注