Windows Updateによる更新プログラムの自動適用時に、システムの再起動も自動的かつ強制的に実行された結果、作業中のデータが失われてしまうことがある。自動再起動を抑制して、こうした悲惨な「事故」を防ぐ方法とは?
対象OS:Windows Vista/Windows 7/Windows 8/Windows 8.1/Windows Server 2008/Windows Server 2008 R2/Windows Server 2012/Windows Server 2012 R2
Windowsにログオンして作業をしている最中に、突然以下のような警告メッセージが表示され、タイマーのカウントが0になったら強制的に再起動されてしまった。あるいは、数十分ほど離席している間に再起動されたらしく、再ログオンしたら作業中のデータがなくなっていた…… こんな悲惨な経験をしたことはないだろうか?
この現象はWindows Updateによる更新プログラム(パッチ)の自動適用に伴う動作であり、Windowsの不具合ではない。本稿では、なぜ強制的に再起動されるのか、どうすれば作業中のデータを失うことなく安全に再起動できるのか、説明する。
Windows Vista/Windows Server 2008以降のWindows OSでは、Windows Updateの設定がデフォルトで「更新プログラムを自動的にインストールする」となっている。この場合、適用すべき更新プログラムの検出と、マイクロソフトのサイトからのダウンロードがバックグラウンドで自動的に実行される。
さらに、毎日午前2時あるいは午前3時といったスケジュールで定期的に更新プログラムの適用が自動実行される(このスケジュールは手動で変更できる)。スケジュールした時刻にコンピューターがスリープしていた場合は、自動的に復帰(レジューム)して適用が行われる。電源オフあるいは休止状態だった場合は、次のシステム起動時に適用が行われる。
ここで重要なのは、多くの更新プログラムが適用を完了するのにシステムの再起動を要する、すなわち再起動が完了するまで更新プログラムによる脆弱性や不具合の修正は完了しない、ということだ。Windows Updateの設定がデフォルトのままだと、適用後の再起動は、最終的には必ず強制的に自動実行される。
ただし、その前には再起動を促すメッセージが表示されたり、強制再起動が実行される前にカウントダウンが行われたり、さらには再起動を遅らせるためのボタンが表示されたりする。それを見逃さなければ、ユーザーは再起動前に作業中のデータを保存するといった対処が可能だ。
Windows Updateによる更新プログラムのインストール後、再起動が強制実行されるまでの間隔は、Windows OSのバージョンによって大きく異なる。Windows 7の場合、再起動を遅延させない限り、デフォルトで5分とかなり短い。一方、Windows 8では3日間に延長された。さらにWindows 8.1では、再起動をいったん遅延させた後に再起動が行われるまでの猶予時間が、15分から1日に延長された。詳細は以下のページを参照していただきたい。
いずれにせよデフォルトの設定のままでは、警告メッセージに気付かなかったり、忙しがっていて再起動を後回しにしたり、再起動を遅延するボタンを押し忘れたりすると、強制的に再起動が実行されてしまうことに変わりはない。
こうした事態を防ぐには、コンピューターが自動的に再起動しないように、Windows Updateの設定を変更すればよい。
その方法の一つとして、前述の「更新プログラムを自動的にインストールする」というWindows Updateの設定を「更新プログラムをダウンロードするが、インストールを行うかどうかは選択する」に変更することが挙げられる。しかし、これでは手動で更新プログラムの適用を指示する必要があるため、いつまでも更新プログラムが適用されず、セキュリティ的に危険性の高い状態が続く可能性がある。
もう一つは、作業中すなわちWindowsにログオン/サインオンしているユーザーが存在する場合は、再起動が自動実行されないように設定を変更するという方法だ。これなら、作業を完了してから手動で再起動できる。以下では、その設定手順を解説する。
ログオン/サインオンしているときにWindows Updateによる強制的な再起動を抑制するには、次のいずれかの方法で設定を変更する必要がある(残念ながらコントロールパネルなどのGUIからは設定できない)。
Windows Vista/7/8.xの場合、エディションがBusiness/Enterprise/Ultimate/Professional/Proのいずれかであれば、以下のグループポリシーによる設定が可能だ(もちろんWindows Serverでも可能)。それ以外のエディションについては、後述のレジストリ操作による設定手順を参照していただきたい。
ローカルグループポリシーで設定する場合は、変更したいPC上でローカルグループポリシーエディター(gpedit.msc)を起動する。Active Directory環境で設定を行う場合は、適用したいActive Directoryのグループポリシーを選択した上で、グループポリシー管理コンソールを利用する。設定する項目はどちらも同じだ。ここでは、Windows 7のローカルグループポリシーで設定する場合を例に手順を解説する(特記しない限り、他のWindows OSでも操作手順は同様だ)。
まず、管理者権限を持つユーザーアカウントでWindowsにログオン/サインインする。次に、[スタート]ボタンをクリックし、[プログラムとファイルの検索]の検索ボックスに「gpedit.msc」と入力するか、あるいは[Windows]+[R]キーを押して[ファイル名を指定して実行]ダイアログを開き、「gpedit.msc」と入力して、実行する。
ローカルグループポリシーエディターが起動したら、左ペインのツリーから[コンピューターの構成]−[管理用テンプレート]−[Windowsコンポーネント]−[Windows Update]を選択する。次に、右側のペインから[スケジュールされた自動更新のインストールで、ログオンしているユーザーがいる場合には自動的に再起動しない]をダブルクリックし、表示された設定ダイアログで[有効]を選択する。
以上の設定を終えたら、いったんシステムを再起動する。これで設定変更の作業は完了だ。
Windows Vista/7/8.xのうち、Starter/Home Basic/Home Premium/無印の各エディションでは、上述のグループポリシーによる設定ができない。この場合は、以下のようにレジストリを操作・設定すれば、再起動を抑制できる。
レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリエディターの操作は慎重に行うとともに、あくまでご自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本Windows Server Insider編集部では責任を負いかねます。ご了承ください。
項目 | 内容 |
---|---|
キー | HKEY_LOCAL_MACHINEの SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU |
値の名前 | NoAutoRebootWithLoggedOnUsers |
値の型 | REG_DWORD |
値の内容 | 0または存在しない: 強制的に再起動する(デフォルト) 1: 再起動を強制しない |
Windows Updateによる自動再起動を抑制するためのレジストリ値 強制的な再起動を抑制するには「1」を設定する。デフォルトではWindowsUpdateキーもAUキーも存在しないので、新たに作成する必要がある。 |
具体的な設定手順として、regコマンドとレジストリエディターの例をそれぞれ紹介する。
■コマンドラインでレジストリ設定を実行する場合
管理者権限で起動したコマンドプロンプトで、以下のようにregコマンドを実行すると、再起動を抑制するためのレジストリ設定ができる(以下のマーカー部分をコピーして、コマンドプロンプトにペーストすると簡単に実行できる)。
C:\Windows\system32>reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v NoAutoRebootWithLoggedOnUsers /t REG_DWORD /d 1
この操作を正しく終了しました。
元の設定に戻す(自動的に再起動されるようにする)には、次のコマンドラインを実行して、レジストリの値「NoAutoRebootWithLoggedOnUsers」を削除する。
C:\Windows\system32>reg delete HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU /v NoAutoRebootWithLoggedOnUsers
レジストリ値 NoAutoRebootWithLoggedOnUsers を削除しますか? (Yes/No) yes
この操作を正しく終了しました。
以上の設定を終えたら、いったんシステムを再起動する。これで設定変更の作業は完了だ。
■レジストリエディターで対話的にレジストリを設定する場合
レジストリエディターで設定するには、まず管理者権限を持つユーザーアカウントでWindowsにログオン/サインインする。次に、[スタート]ボタンをクリックし、[プログラムとファイルの検索]の検索ボックスに「regedit」と入力するか、あるいは[Windows]+[R]キーを押して[ファイル名を指定して実行]ダイアログを開き、「regedit」と入力して、実行する。
レジストリエディターが起動したら、以下の画面のように設定する。
以上の設定を終えたら、いったんシステムを再起動する。これで設定変更の作業は完了だ。
上記の設定を行った場合でも、ユーザーがログオフ/サインアウトした状態では、Windows Updateによる再起動は強制的に実行される。あくまでもログオン/サインイン中、すなわち作業中しか再起動は抑制されないことに注意してほしい。
もう一つは、繰り返しになるが再起動するまで更新プログラムの適用が終了しない(つまりセキュリティ的には危険な状態が続く)という点だ。なるべく早く手動で再起動を指示し、更新プログラムの適用を完了させた方がよい。
■更新履歴
【2015/04/16】Windows 8/8.1/Windows Server 2012/2012 R2に対応しました。またregコマンドでレジストリを設定する手順を追記しました。
【2010/04/02】初版公開。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.