DISM /Image:D:\ /Get-Packages
DISK /Image:D:\ /Remove-Package /PackageName:(packagename)
このDISMのRevertPendingActionsでやっていることは、レジストリに残っているUpdate途中だよという記録を消すことらしく、DISMコマンドが成功しないなら手動でやるような手もあるとのことで、試してみる。 レジストリをロードして、regeditで「HKEY_LOCAL_MACHINE\Offline_Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending」を確認して中身を削除、レジストリを書き出すという手順だったが、途中のregeditで見てみると、PackagesPendingキーの下にサブフォルダが数百個あった。これはくるくる状態で無限に増えたりしていたのではないか…? とりあえずコマンドラインで全削除を行い、元キーも空で作り直すことにした。
reg load HKLM\Offline_Software D:\Windows\System32\config\SOFTWARE
reg delete "HKEY_LOCAL_MACHINE\Offline_Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending" /f
reg add "HKEY_LOCAL_MACHINE\Offline_Software\Microsoft\Windows\CurrentVersion\Component Based Servicing\PackagesPending"
reg unload HKLM\Offline_Software
さらに保留ファイル pending.xml も念のためリネームして削除扱いにする。
cd d:\Windows\WinSxS\
ren pending.xml pending.xml.bank