我正在使用 Microsoft 自动化安装工具包 10(主机是 Windows 10)为目标平台生成 WindowsPE 启动棒amd64
。
因为我不需要 WinPE 内部的网络连接,所以我想完全安全地禁用它们。
我大致了解WinPE 启动链所以我知道我可以通过配置文件允许wpeinit
我禁用网络。10年未解之谜剩下的问题是:这个文件应该如何构造?下面是一个最小的例子
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<EnableNetwork>false</EnableNetwork>
</unattend>
不会抛出错误消息,但也无法工作。它从内部调用startnet.cmd
如下:
wpeinit -unattend:"%SystemRoot%\system32\Unattend.xml"
虽然我也有 看到 wpeinit /unattend: ...
。
日志%SystemRoot%\system32\wpeinit.log
文件指出:
2017-08-02 13:26:16.061,信息 WPEINIT 正在处理无人值守文件 [X:\windows\system32\Unattend.xml]
...
2017-08-02 13:26:16.295,信息 ==== 初始化网络访问并应用配置 ==== 2017-08-02 13:26:16.295,信息未指定 EnableNetwork 无人值守设置;此上下文的默认操作是启用网络支持。
这假如 例子对我也没什么帮助,我想这可能是为了自动安装,而不是配置。
我通过以下命令验证网络是否已禁用
netsh interface ipv4 show interfaces
netsh interface ipv6 show interfaces
有可能通过 netsh 禁用连接喜欢
netsh interface set interface "Local Area Connection" DISABLED
但我担心 WinPE 可能已经尝试访问 DHCP 或者在短时间内可以通过网络访问。
那么如何实现无网络 WinPE?谢谢!
由于我需要使用其驱动程序初始化设备,所以不能wpeinit
从startnet.cmd
选项中调用吗?一些帖子建议如此。
答案1
好啦!我太接近成功了,终于让它工作了(一个参考问题中实际上有答案,仅适用于x86
)。
重要的经验教训:
- 目标平台很重要对于设置
components
是必需的,请参阅他们的文件,尤其是Microsoft-Windows-Setup
允许<EnableNetwork>
配置
不用多说,这是Unattend.xml
通过生成过程复制到的%SystemRoot%\system32
:
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="windowsPE">
<component name="Microsoft-Windows-Setup" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="AMD64">
<EnableNetwork>false</EnableNetwork>
</component>
</settings>
<cpi:offlineImage cpi:source="" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>
通过修改后的startnet.cmd
wpeinit /unattend="%SystemRoot%\system32\Unattend.xml"
这会导致以下日志条目:
2017-08-02 14:51:20.747,信息 WPEINIT 正在处理无人参与文件 [X:\windows\system32\Unattend.xml]
...
2017-08-02 14:51:20.982,信息 ==== 初始化网络访问并应用配置 ====
2017-08-02 14:51:20.982,信息网络支持将不会启用。
2017-08-02 14:51:20.982,信息状态:成功(0x00000001)
注意力:文件夹中文件的唯一存在导致对其进行评估。因此,如果文件位于该位置,则System32
参数 to实际上不是必需的。wpeinit