強制 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 問題,如果發現已安裝任何需要卸載的 Dirs;

      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

輸入以下內容並按 Enter 鍵:

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] 進行尋找。
  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."
}

相關內容