强制 DISM 卸载/删除已安装的 Windows WIM

强制 DISM 卸载/删除已安装的 Windows WIM

我使用 DISM 来自定义和更新部署到我们计算机的映像。我在外部驱动器上执行此操作,因为它的 I/O 负担非常重。不久前,我似乎将映像安装在 F 驱动器中,即 F:\WIN81MOUNT。文件在那里。dism /get-mountedwiminfo但是运行显示没有安装 WIM。因此,我不知道如何删除 WIN81MOUNT,因为我无法重新安装、卸载或删除文件夹(文件具有 SYSTEM 之类的权限,因为它们在 Windows 映像中)。

我如何强制卸载或重新安装此 WIM?我尝试了所有标准选项,例如 unmount-wim、cleanup-image、remount-wim... 它们都不起作用,说不支持该请求。日志显示“这不是 WIM 安装点。”。

答案1

以下信息来自“http://trueliarx.blogspot.co.uk/2014/07/force-unmount-and-clean-up-of-wim-image.html”

使用 DISM 强制卸载并清理 Wim 映像

当您使用 RT7 (+ AIK) 时,有时会出现一个错误,提示已安装 wim(例如 boot.wim)。

为了解决该问题,您应该以管理员身份运行以下命令:

dism /cleanup-wim

如果此方法不起作用,我找到了另一种解决方案,即编辑注册表并删除以下所有(必要的)条目:

HKLM\SOFTWARE\Microsoft\WIMMount\mounted images\

只要您是管理员,它就应该可以工作。

您已经使用过的常规程序(?)如下所示:

  1. 可以在日志文件中找到以下信息:C:\Windows\Logs\DISM\dism.log

  2. 对于以前在 64 位 Windows 上运行的 64 位服务工具;

    1. 在提升的命令提示符下出现问题;

      cd C:\Program Files\Windows AIK\Tools\amd64\Servicing
      
    2. 在同一个提升的命令提示符问题中;

      dism /?
      

      可能会显示一些有用的信息。

    3. 在同一个提升的命令提示符问题中;

      dism /Get-MountedWimInfo
      

      可能会显示有关已安装图像的信息。

    4. 如果发现任何已安装的 Dir,则对于每个 Dir 问题都需要卸载这些 Dir;

      dism /Unmount-Wim /Mountdir:C:\examplepath /commit
      

完成后Get-MountedWimInfo,可以使用 Windows 资源管理器删除通过 找到的相关 wim 文件。

答案2

以上方法对我都不起作用,因为看起来 dism 部分没有什么需要清理,只是文件夹上的权限。

我终于找到了一些可行的方法(如果上面列出的注册表和 dism 解决方案不起作用):

首先,您必须更改“损坏”的挂载文件夹的所有者权限:

右键单击文件夹->属性->安全选项卡->高级按钮->所有者选项卡->编辑按钮->选择您的用户帐户->激活在子容器和对象上替换所有者。

完成后,关闭所有属性窗口并再次打开属性->安全选项卡->高级按钮->权限选项卡->更改权限按钮->添加您的用户帐户并选择替换所有子对象...

然后以管理员权限打开命令提示符( https://technet.microsoft.com/fi-fi/library/cc947813%28v=ws.10%29.aspx

输入以下内容并按回车键:

DISM /Cleanup-Wim 现在您应该能够删除所有剩余的文件/文件夹。

来源 :https://www.wincert.net/forum/topic/12680-cant-delete-wintoolkit_mount-folder/?do=findComment&comment=116249

答案3

最后的办法是:

  1. 打开注册表并转到键 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WIMMount\Mounted Images。
  2. 在那里,你应该找到一个或多个具有奇怪名称的子项,例如 [e86b54b7-dc5f-4c15-8eb5-9b615bc3b154]
  3. 打开第一个文件夹,找出它是否对应于看起来已损坏的已安装映像;使用值 [Mount Path]、[WIM Path] 和 [Image Index] 来查找。找到上述第 2 点中提到的正确子项后,将其删除。
  4. 删除并重新创建 Mount 文件夹..

答案4

循环并使用 PowerShell 卸载任何剩余的 Wim。

$subKeyMatch = "Mount Path"
$orphMountedWims = @()
$regMounted = "REGISTRY::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WIMMount\mounted images"
$mountedKey = [array](Get-ChildItem "$($regMounted)\" -Recurse -Depth 0)
foreach ($key in $mountedKey) {
    $keyProps = ((Get-Item -path "REGISTRY::$key").property)
    foreach ($subKey in $keyProps) {
        if ($subKey -like "$($subKeyMatch)") {
            $regSubPropValue = Get-ItemProperty -path "REGISTRY::$Key" | Select-Object -ExpandProperty $subKey 
            $orphMountedWims += $regSubPropValue
        }
    }
}

if (($orphMountedWims | Measure-Object).Count -ge 1) {
    Write-Warning "Orphaned WIM(s) have been found."
    foreach ($oMWim in $orphMountedWims) { 
        try {
            Write-Output "Attempting to dismount and discard changes for Orphaned [Path: $($oMWim)]"
            Dismount-WindowsImage -Path "$($oMWim)"-Discard
            Write-Output "Success discarding changes."
        }
        catch [System.exception] {           
            Write-Error "Error - Failed to dismount and dicard changed from Orphaned wim [Mount Path: $($oMWim)]. Error: $($_.exception.message)"
            continue
        }
    }
}
else {
    Write-output "No Orphaned WIM files found, module clear to run."
}

相关内容