2017/08/06(Sun)Windows 10のメジャーアップデート強制適用を一時回避する方法

2017/08/06 1:48 Software::Windows
リモートアクセスで管理しているWindows 10 PC(物理)について、自分がマシンの傍で作業できるときまでWindowsメジャーアップデートを延期し、かつその他のWindows Updateは普通に適用させる方法を紹介する。

メジャーアップデートと延期の意図

Windows 10より、メジャーアップデートと呼ばれるWindowsコア(C:\Windows)をまるごと置き換える大型アップデートが数ヶ月おきに配信される。
Windows Insider Programを使ってある程度の公開βテストも経てから一般配信されているとはいえ、適用時にフリーズしたりパーティションに問題が発生したりといった問題も報告されており、リモート環境で適用するのは怖い。

現に自分の手元にはないリモートのPCで、Anniversary Updateの適用時、内蔵Blu-rayドライブを繋ぎっぱなしにしているのが原因でアップデート適用時に必ずフリーズする等の問題も経験したので、リモートで気軽に適用させるのは怖い。(リモート接続する手段を失うのと、リモートの人が使えなくなる)
年に何回かローカルで作業できるタイミングがあるので、その時まで延期しておくというのが本記事の意図である。

今回の状況

Creators Update(ver.1607)で使用している環境で、「更新を延期する」設定にしていたが、Anniversary Update(ver.1703)の強制適用予告が全画面ポップアップで表示されるようになった。この状態からの対処法について。
(これ以降の画像は全て、VMの検証環境で取り直したものなので、多少違いがあるかも。)

win10cu-01.png


上記の状態になっていると、既にアップデートはローカルドライブにダウンロード済で、次回の再起動でアップデートが始まってしまう。とりあえず再通知をクリックする他ない。(時刻を選択は、最大で1週間しか延期できないので選択肢には入らない。)

検証してみた結果、Anniversary Updateのパッケージがダウンロードされるまでに「Windows 10、バージョン1703の機能更新プログラム。」について、「更新プログラムをインストール準備をしています」と「更新プログラムをダウンロードしています」が各々2回ずつ表示される。

win10cu-02.png

win10cu-03.png


1回目の準備とダウンロードのメッセージの間、C:\$WINDOWS.~BT\以下に、このようなフォルダが出来、合計70MBほどがダウンロードされる。
C:\$WINDOWS.~BT>tree
フォルダー パスの一覧
ボリューム シリアル番号は 000000C8 6480:3A48 です
C:.
└─Sources
    └─Panther
        ├─img
        └─Resources
2回目の準備とダウンロードまで終わると、C:\WINDOWS.~BT\以下はこのように変化する。
win10cu-04.png

オフラインインストール用のISOを全部展開した状態とほぼ同じで、この状態では7GB弱の容量となっている。
ディスク上のサイズの方が大幅に小さいのは、ディレクトリ内にWIMをマウントしているからで、実消費は5GB程度といったところ。
win10cu-05.png


スケジュールアップデートの削除

ということで、まずはアップデートが始まらないよう、ダウンロード済のイメージを削除する。
基本的にC:\WINDOWS.~BT\以下を削除すればよいのだが、2箇所気を付けるところがある。
  • 削除できるように所有者をSYSTEMから変更する
  • マウント済のWIMイメージをマウント解除する
WIMイメージはこのようにして場所を確認の上、/discardオプションをつけて外せば良い。/commitでも外れるが、どうせ削除するので、変更をWIMに書き出す時間を待つ必要は無い。
マウント解除を忘れると、後で「要素がありません」という謎のエラーで、C:\$WINDOWS.~BT\Sources\SafeOS.Mount\内のファイル削除に失敗する。
C:\>dism /Get-MountedWimInfo

展開イメージのサービスと管理ツール
バージョン: 10.0.14393.0

マウントされているイメージ:

マウント ディレクトリ: C:\$WINDOWS.~BT\Sources\SafeOS\SafeOS.Mount
イメージ ファイル: C:\$WINDOWS.~BT\Sources\SafeOS\winre.wim
イメージ インデックス: 1
読み取り/書き込みでマウント: はい
状態: OK

操作は正常に完了しました。

C:\>dism /Unmount-Image /MountDir:C:\$WINDOWS.~BT\Sources\SafeOS\SafeOS.Mount /discard

展開イメージのサービスと管理ツール
バージョン: 10.0.14393.0

イメージのマウントを解除しています
[==========================100.0%==========================]
操作は正常に完了しました。
所有者の変更と削除の手順はこちら。エクスプローラからやっても問題無い。
もしプロセスによってロックされて削除に失敗した場合は、C:\$WINDOWS.~BT内からプロセスが起動していないかタスクマネージャで確認し、強制終了させるとよい。(Windowsは再起動しないこと!)
C:\>takeown /F "C:\$WINDOWS.~BT" /R /D Y

C:\>rd /s /q "C:\$WINDOWS.~BT"

再ダウンロードの阻止

この状態にしておけば、とりあえず直後の再起動ではアップデートは適用されないのだが、またアップデートをダウンロードし直し、C:\$WINDOWS.~BTに配置してしまう。これを防ぐ簡単な方法がこちら。
C:\>type nul >"$WINDOWS.~BT"
要は、$WINDOWS.~BTという空ファイルをC:\に配置しているだけなのだが、これはファイルと同名のディレクトリを作成できないという仕様を応用したものであり、シンプルながら効果は抜群だ。

win10cu-06.png


再起動して確認

ここまで出来たら、Windows Update内の"今すぐ再起動する"あるいは、スタートボタンから"更新して再起動する"を選んで再起動してみる。
win10cu-07.png


上記の画像では、ver.1703の更新プログラムのみがリストされているが、Microsoft Officeなどの他のアップデートがある場合は、そちらの適用は正しく行われ、1703のみ失敗するという挙動になる。

再起動が終わると、インストールの失敗が通知される。

win10cu-08.png


開いてみると、このように
一部の更新ファイルが見つからないか、更新ファイルに問題があります。後で更新プログラムの再ダウンロードを試みます。
エラー コード: (0x80070003)
と表示されるが、これは意図通り。何度再試行してみても、メジャーアップデートは必ずこれで失敗する。
win10cu-09.png


更新ログを確認すると、他のアップデートは正しく提供され、1703のみ失敗しているログが残っているはず。
win10cu-10.png


メジャーアップデート適用

自分の準備が整ったら、C:\に作成した$WINDOWS.~BTという空ファイルを削除し、再度Windows Updateを実行すれば、インストールを続行することができる。

参考資料

Windows 10 Creators Updateの強制アップデート、恐るるに足らず | Solomonレビュー[redemarrage]
「Windows 10」のメジャーアップデートを延期する手順について