※ Windows 10 Fall Creators Update (1709) で修正された模様。 2017/10/24
Windows 10 Creators Update で顕著になった
Dism /online /Cleanup-Image /RestoreHealth で 0x800f0906 になる
エラーを回避する為のレジストリを削除するバッチを作りました。
バッチをコピペして管理者として実行して下さい。
削除したレジストリを戻す気が無いので、バックアップは手動で行って下さい。
このバッチで使用している「regini.exe」が応答ファイルを必要とするので
書き込みが出来るフォルダに置いて使用して下さい。
SubinAcl や SetAcl の様な外部ツールを使っていないので
このバッチだけで処理が完了します。
2017/7/7 の時点で 2017/6/28 に 配信された KB4022716 を適用しても
エラーが出てクリーンアップが異常終了するので対応する事にしました。
メーカーPCでクリーンインストール直後に行って出るエラーですので
おそらく、バグが解消されていない状況だと思います。
このレジストリは、通常の手段で削除が出来なくて
レジストリエディタでアクセス許可を変更してからでないと削除出来ません。
なので、削除には「reg.exe」ではなく「regini.exe」を使用します。
実際にレジストリエディタを開くと分かるのですが
キー名がとても長く、同じ階層に沢山キーが並んでいるので探すのも大変です。
1つ消すだけでも面倒なのに、2つキーを消す必要があるので結構手間になります。
使用しているPCが1台だけなら一度だけ作業を行えばいいのですが
複数台所有している場合とか、自社でキッティングを行っているとか
管理している台数分だけ作業回数が増えるので苦痛の元です。
紹介しているサイトも手作業ばかりでしたので、これも作成理由になりました。
マイクロソフトが直してくれれば、このバッチ要らなくなるのですけどね。
2017/7/12 : ちょっこし修正
cd /d "%~dp0"
SET textFile="Dism_Cleanup-Image_RestoreHealth_FixReg.ini"
SET BaseRoot="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing"
SET TestRoot="Microsoft-Windows-TestRoot-and-FlightSigning-Package"
SET FindHKEY=/B /C:"HKEY_LOCAL_MACHINE"
TYPE NUL> %textFile%
FOR /F "delims=" %%0 in ('REG QUERY %BaseRoot% /S ^| FIND /I %TestRoot% ^| FINDstr %FindHKEY%') do @echo;%%0 [1 5 7 11 14 17 21]>> %textFile%
FOR /F "delims=" %%0 in ('REG QUERY %BaseRoot% /S /F %TestRoot% ^| FINDstr %FindHKEY%') do @echo;%%0 [DELETE]>> %textFile%
regini %textFile%
DEL /F %textFile%