3

这是我在这里的第一篇文章,但我一直在使用 stackoverflow 来解决我遇到的任何问题。

(TL;DR:我的批处理脚本说它成功卸载了 WIM 文件,但是当我查询 WIM 时,孤立文件仍然存在,直到我手动运行 /cleanup-wim。)

我正在尝试制作一个用于修改 Win PE 映像的批处理文件,但在最后一步时遇到了问题。

基本上我的脚本首先创建 amd64 win PE 架构,挂载 WIM 文件,编辑 SYSTEM 文件的注册表配置单元(然后关闭配置单元),将文件复制到特定文件夹,然后应该卸载 WIM,并创建一个可以刻录到磁盘或复制到可引导 USB 的 ISO。

一切正常,除了卸载部分。

为了让您了解这是如何首先完成的,我运行:

C:\windows\system32\Dism.exe /Mount-Wim /WimFile:C:\winpe_amd64\media\sources\boot.wim /index:1 /MountDir:C:\winpe_amd64\mount

在注册表更改、文件创建等之后,我稍后运行:

C:\windows\system32\Dism.exe /Unmount-Wim /MountDir:C:\winpe_amd64\mount /commit
C:\windows\system32\Dism.exe /cleanup-wim

使用 /unmount-wim,我有时会收到此错误:

图像文件:C:\winpe_amd64\media\sources\boot.wim
图像索引:1
保存图像
[===========================100.0%===================== =====]
卸载映像
[===========================100.0%===================== =====]

错误:0xc1420117

无法完全卸载该目录。这通常是由于应用程序仍然在挂载目录中打开了文件。关闭这些文件并再次卸载以完成卸载过程。

DISM 日志文件位于 C:\windows\Logs\DISM\dism.log

这就是我在脚本中实现 /cleanup-wim 的原因。这引起:

在 C:\winpe_amd64\mount 卸载映像
[===========================100.0%===================== =====]
扫描驱动器 C 以查找陈旧文件
操作成功完成。

但是,无论初始 /unmount-wim 是否完全成功,当我查询任何已安装的 WIM 时都会返回以下内容:

C:\windows\system32\dism.exe /get-mountedwiminfo


挂载目录:C:\winpe_amd64\mount
图像文件:C:\winpe_amd64\media\sources\boot.wim
图像索引:1
安装读/写:是
状态:无效

操作成功完成。

如果我再次手动运行 /cleanup-wim,它将最终成功卸载:

在 C:\winpe_amd64\mount 卸载映像
[===========================100.0%===================== =====]
扫描驱动器 C 以查找陈旧文件
操作成功完成。

一旦我再次查询,就找不到挂载/孤立的 WIM。我还尝试让我的批处理脚本在 /unmount-wim 和 /cleanup-wim 之间等待 5 秒,但仍然得到相同的结果。我还用清理命令调用了另一个批处理脚本,但仍然没有骰子。

有什么建议么?

4

0 回答 0