Windows 10 バージョン1607からWindows Updateでの更新の適用後、自動再起動を止められなくなりました。
阻止する方法は幾つかあるのですが、ここで紹介するのはシステムへの影響が少なく、一般ユーザーでも比較的簡単に設定できる方法です。
Ver.2について
ここで説明している方法では、最新のWindows 10に対応できていませんでした。
「元に戻す場合」に説明した手順で削除後、こちらの記事を参考にしてください。
Windows 10 更新アシスタントの問題
2018年2月下旬から配信されている「Windows 10 更新アシスタント」は、「アクティブ時間」を無視して再起動を行います。
そのため、Windows 10 バージョン1709でない場合は、必ずこちらの対策もしてください。
Windows 10 バージョン1607での自動再起動問題
説明など要らないので、手っ取り早く設定したい方はこちらへ。
Windows 10からWindows Updateでの更新を拒否できなくなりました。更に、Windows 10 バージョン1607からは適用するタイミングもコントロールできなくなりました。
更新が配布されるとバックグラウンドでインストールされ、準備が完了すると再起動を要求されます。再起動はユーザーが設定したアクティブ時間外で実施されます。
ならば問題無いだろうと思われるかもしれませんが、アクティブ時間として設定できるのは最大12時間(来年のThe Creators Update以降はProおよびEducationのみ18時間に延長)となっており、長時間作業を行ったり、うっかり長時間席を外したりすると、自動で再起動されてしまいます。
しかも、ソフトが稼働中で未保存の状態でもWindows 10は再起動してしまうので、ユーザーデータは失われます。
Microsoftはセキュリティ対策のためという名目でこのような仕様としているようですが、セキュリティ(体面)を重要視するのは企業だけで、一般ユーザーにとってはデータの方が重要です。
まあ、一番の問題は、自分のパソコンなのに思うようにコントロールできないことでしょう。
自動再起動対策
自動再起動対策としてまず考えられるのはグループポリシーで制御することです。これは企業で組織的に一括してPCを管理する仕組みなので制御できないと困るのですが、Windows 10ではWindows Updateに関するグループポリシーは殆どが無視されます。完全にコントロールするにはEnterpriseエディションが必要なようです。
次に行われたのがRebootタスクを止めることです。海外のサイトを見ると、この関係の情報がいろいろ見つかります。
自動再起動の犯人がRebootタスクであることは判明しています。問題は、このタスクを無効にしても暫く経つと自動的に有効に戻されてしまうことです。
対策は二つ。
有効に戻されるたびに無効にするタスクを自動で実行させること。もう一つはRebootタスクをWindowsが触れないようにアクセス権を変えてしまうことです。
どちらの方法もシステムに与える影響が大きかったり、タイミングによっては再起動されることもあります。今後のアップデートで問題が発生する可能性があり、一般向ではありません。
もう一つの方法
きよたに 様からこのような方法もあることを、コメントで教えて頂きました。
確かに根本的な対策ではないので、一蹴する人も多いでしょうが、この方法は下記の利点があります。
- 再起動を止めているだけなので、再起動が不要な更新は止めている間も追加でインストールされる
- 再起動を止めても、Windows Defender定義ファイルの更新は行われる
- 人がやることを自動でやっているだけなので、Windowsへの影響が少ない
- 一般ユーザーでもGUIだけで設定可能
- Windows 10の大型アップデートがあっても、再登録するだけで再起動を防止できる
- 元の動作に戻すには、登録したタスクを削除するだけ
などなど。
上記サイトの方法ではPCを使う時間が定まっていない場合、タイミングが悪いと自動再起動されてしまう可能性があります。そのためスクリプトとタスクを変更したものが以下となります。
この方法はWindows 10 Pro/Homeなど、どのエディションでも設定可能です。Windows 10 Homeでの動作も確認済みです。
自動再起動を防止する仕組み
Windows 10 バージョン1607からはアクティブ時間内での自動再起動は行われません。
ならば、アクティブ時間を一定間隔で再設定してPCが起動している間はずっとアクティブ時間にすればよいことになります。このアクティブ時間の再設定を自動で行うタスクを登録します。
設定するとどうなるか
以下で説明する設定を行うと、今までと同様に再起動が必要な更新が配布されるとバックグラウンドでインストールされ再起動待機状態になります。
再起動待機状態なので、新しい更新が配布されてもインストールされないと思われるかもしれませんが、インストール可能な更新は追加でインストールされていきます。Windows Defenderの定義ファイルなど再起動が不要なものは逐次新しいものがインストールされます。
「設定」アプリの「Windows Update」を見るとアクティブ時間外で再起動する旨表示されています。この表示は時間が経つとアクティブ時間の表示がずれていき再起動は自動では行われません。なお、この時点では「アクティブ時間の変更」という項目が表示されており手動でも変更可能な状態です。
この状態で1週間以上経過するとこのような表示に変わります。強制的に再起動しようとしていますがアクティブ時間内のため再起動に失敗しています。この状態になると「アクティブ時間の変更」という項目が消えて手動では変更できなくなっています。
この時点での経過時間はイベントログを見ると電源ONから790,043秒、即ち9日以上再起動していないことが分かります。
また、この状態で再起動予定の時刻にが近くなると通常の通知ではなく、作業を邪魔するように通知が表示されます。
「閉じる」をクリックしないと何もできませんが、閉じれば通常通り作業は続けられます。また、表示だけなので動作しているソフトが止められることはありません。
この状態で2週間以上、自動で再起動されないことを確認しています。
これは極端な例で、自動再起動を止める目的は、作業を自分のペースで継続させパソコンの都合で邪魔されることを防ぐことです。
作業の区切りがついたらできるだけ早く再起動させてください。
「電源」の2つの選択の違い
再起動が必要な状態で電源を切ろうとすると、このように表示されます。
「更新してシャットダウン」と「更新して再起動」のどちらを選ぶかですが、更新をどこまで完了させるかの違いです。
更新は、以下の3段階で行われます。
- 更新のダウンロードとユーザーの作業に影響の無い範囲での更新
- ユーザーの作業に影響のある範囲での更新
- 再起動しないと更新できないファイルの更新
「更新してシャットダウン」を選択した場合は2.まで、「更新して再起動」を選択した場合は3.まで行われます。
「更新して再起動」を選び立ち上がった後でシャットダウンした方が、次に電源を入れた時の立ち上がりは速くなります。
なお、最近は多くの更新プログラムをまとめて更新するので、更新に時間がかかります。
事務所の電源を落として帰宅する場合、「更新してシャットダウン」を選択するとパソコンがシャットダウンするまでに時間がかかり終電に間に合わない可能性もでてきます。「更新して再起動」を選択すると更に時間がかかります。
このような場合は、何もプログラムが動作していない状態で、電源を長押しして電源を落とします。パソコンが壊れる可能性もありますので、どうしても急いでいる時だけ行ってください。
設定用パッケージの仕様
今回、作業を単純化するために以下の仕様で固定しています。変更する場合はパッケージ内の該当部分を自分で書き換える必要があります。
- スクリプトファイルの置き場所は、「C:\PreventRestart」で固定
- スクリプトファイル名も固定
- アクティブ時間は任意のユーザーがログオンした時点から12時間に設定される
- 以後、6時間ごとにアクティブ時間を後ろに6時間ずらすように自動更新する
- 自動更新に失敗した場合は30分間隔で3回まで再実行される
PC起動時点から12時間をアクティブ時間とし、半分まで経過したら更に半分延長します。これをPCを起動している限り延々繰り返します。半分まで過ぎたら延長する方法はDHCPアドレスのレンタル期間更新方法を参考にしています。
設定手順
設定は最初に一度だけ行えば以後は何もする必要はありません。
まず、こちらから再起動防止パックをダウンロードしてください。セキュリティソフトなどでマルウェアやウイルスと検知された場合は最後に示す方法で自分でファイルを作成してください。Windows DefenderおよびG Dataでは問題ありませんでした。
ダウンロードしたら、ファイルを右クリックして表示されたメニューから「プロパティ」をクリックします。
「全般」タブの下部の「ブロックの解除」にチェックを入れ「適用」をクリックします。
「セキュリティ」の説明が消えたことを確認して「OK」をクリックして「プロパティ」を閉じます。
この操作は必ず展開前のZIPファイルで行います。そうしないと展開したファイル全てがブロックされて解除に手間がかかります。
ダウンロードしたファイルを展開します。
展開すると「PreventRestart」というフォルダーがありますのでフォルダーごとCドライブの直下にコピーします。
ZIPファイ名のフォルダーではなく、その中の「PreventRestart」というフォルダーをコピーします。
コピー後のフォルダー構成は、
C:\PreventRestart-v1\PreventRestart
ではなく、
C:\PreventRestart
となっていることを確認してください。
コピーしたらダウンロードしたファイルと展開したファイルは削除してかまいません。
コピーしたフォルダー「C:\PreventRestart」を開くと3個のファイルがあります。
次に、タスクを登録するためにタスクスケジューラを起動します。
Cortanaで「タスク」と入力すると「タスクスケジューラ」が表示されるのでクリックします。
「タスクスケジューラ」の左側で「タスクスケジューラライブラリ」を選択し、右側の「タスクのインポート」をクリックします。
先ほどコピーした「C:\PreventRestart」フォルダーを開き、「PreventRestart.xml」を選択して「開く」をクリックします。
「タスクの作成」が表示されるので「OK」をクリックして閉じます。
このダイアログで細かい設定を変更できますが、必要ならば後で「プロパティ」から再度開くことができます。
「PreventRestart」タスクが登録されます。
登録直後は「無効」になっているので、「PreventRestart」タスクを選択して右下の部分の「有効化」をクリックします。
有効になると表示は「準備完了」となります。
これでアクティブ時間の自動更新の準備ができましたのでPCを再起動してください。
動作を確認するには「設定」アプリを開き、「更新とセキュリティ」をクリックして、
左側の「Windows Update」を選択し、右側の「アクティブ時間の変更」をクリックします。
「開始時刻」がPCを起動した時刻の00分、例えばAM5:30に起動したならAM5:00に、終了時刻がその12時間後に設定されていれば正しく機能しています。「キャンセル」をクリックして閉じます。
正しく設定されていても「設定」アプリで表示される時刻が正しく表示されるまでに時間がかかる場合があります。時刻が変わっていない場合は数分待ってから再度確認してみてください。
6時間以上経ってから再度確認して、アクティブ時間が変わっていれば更新も正しく行われています。
アクティブ時間が正しく設定されていない場合は、タスクスケジューラを起動して、「PreventRestart」タスクが「無効」ではなく「準備完了」になっていることを確認してください。なっていない場合は右下の部分で「有効化」をクリックしてください。
(2021/9/24 追記)
コメントで頂いた情報によると、F-Secureというセキュリティソフトは、スクリプトを削除してしまうそうです。Windows 10に予めインストールされているWindows DefenderとG Dataでは、削除されないことは確認しています。
そのため、再度設定するのも面倒でしょうから、別途、セキュリティソフトをインストールしている場合は、スキャンの除外フォルダーに「C:\PreventRestart」を追加しておく方がよいでしょう。
元に戻す場合
アクティブ時間の自動更新をやめる場合は、「タスクスケジューラ」を起動してから「PreventRestart」タスクを選択して「削除」してください。
そして、再起動してから「C:\PreventRestart」フォルダーを削除してください。
セキュリティソフトにダウンロードや実行をブロックされる場合
スクリプト内でレジストリーを操作しているため、セキュリティソフトによってはダウンロードや実行をブロックされる可能性があります。
その場合は、「C:\PreventRestart」フォルダーを除外登録してみてください。
また、スクリプトパックをダウンロードできない場合は、下記の手順でファイルを作成してください。
ファイル名は必ず同じ名前にしてください。変更する場合はファイル名、パス、及び、各ファイル内の黄色の部分を書き換える必要があります。
ファイル名:PreventRestart.bat
@echo off |
ファイル名:PreventRestart.vbs
改行せず一行で記述します。
CreateObject("WScript.Shell").Run "cmd /c ""c:\PreventRestart\PreventRestart.bat""", 0 |
ファイル名:PreventRestart.xml
<?xml version="1.0" encoding="UTF-16"?> |
まとめ
とても単純ですが比較的簡単に設定できるため、自動再起動に困っている場合は設定してみては如何でしょうか。
「再起動防止パック」は、2018年3月末時点で1,500回ほどダウンロードされています。
バグについてはコメントで指摘を受けた1点については再現できず、その他の指摘は現状まではありません。
アクティブ時間の自動設定は簡単な操作なので常駐型のソフトを誰かが作ってくれればよいのですが。
なお、Windows 10 バージョン1703/1709にアップデートしても設定は引き継がれ、何もしなくても正常に動作し続けることを確認しています。
コメント
アクティブ時間のバグ見つけました。
アクティブ時間のBatでアクティブ時間開始が13時~の指定になった場合、アクティブ時間がデフォルトの8~17時になるバグ。自分の環境では再現性100%のバグです。
でも、アクティブ時間開始の時間が13時にならないように避ければ問題ないこともわかりました。
アクティブ時間開始が12時の時は発症せず。14時の時も発生せず。なぜかアクティブ時間が13時開始の時のみ発生するバグです。
コメントを頂き、ありがとうございます。
現時点(24:53)では確認できないため、疑似的な実験をしてみました。
「設定」アプリの「時刻と言語」で「時刻を自動的に設定する」を「オフ」にします。
「日付と時刻を変更する」の「変更」をクリックして13:00台に変更します。この時、不整合が起きないように過去の13:00台に設定します。
変更後、システムを再起動して時刻が13:00台であることを確認し、自動で設定されたアクティブ時間を確認したところ13:00から1:00に設定されており、御指摘の現象を再現できませんでした。
今日、実時刻の13:00台に再度確認してみますが、何かしらのタスクと競合している可能性もあるため、現象が発生した環境で思い当たることは無いか教えて頂けませんでしょうか。
13:00台に3台のPCで確認してみましたが13:00から1:00に設定されており現象を再現できませんでした。
デフォルトになるとのことですので、何か他の要因が影響してタスクが実行されていない可能性があります。
タスクスケジューラーでタスク履歴を有効にしてタスクが実行されているか確認してみてください。
本当に安易なコメントですが、サービスのwindows updateを無効にするだけで
更新も自動再起動もされないのではないかと。1511まではこれで乗り切れましたが
1607以降はどうなんでしょうかね。
私のPCは録画専用機なので勝手に再起動されては困るんですよね。
ほんとWindowsは10になってから更に使いづらくなりました!
コメントを頂きありがとうございます。
以前、どうやっても再起動を止められず困ってWindows Updateを止めてしまえばと考えた時もありました。
しかし、いろいろ調べるとリスクが高いのでやめました。
Windows Updateは2つに分けて考える必要があります。更新と再起動です。
更新はバグを増やすようなものでなければ拒む理由はありません。
Windows 10ではWindows Updateでの更新にWindows Defenderの更新も統合されてしまいました。そのためWindows Updateを止めるとWindows Defenderの更新も止まってしまいます。
この問題はサードパティのセキュリティソフトを導入することで対処可能です。(面倒な設定をすればWindows Defender自身に更新を実行させることは可能です)
また、更新にはAdobe Flashのように再起動しなくても更新できるセキュリティパッチもあります。Windows Updateを止めるとこれらの更新も止まってしまいます。
したがって、Windows Update自体を止めることは再起動しなくても適用可能な更新も止まってしまうためリスクが高くなります。
以上からWindows Updateを止めずに再起動だけを止めることを皆さん模索しているようです。
タスクスケジューラーの有効設定まで完了したけれど・・・
再起動させますと スケジューラーの発動に必要なvbsが指定の
フォルダーに有るのに、「見つかりません」と なってしまいます。
解凍が失敗かと思って 再度試みましたが 同じです。
コメントを頂きありがとうございます。
2点確認して頂きたいことがあります。
ZIPファイルを解凍するとZIPファイル名のフォルダーを作成して、その中に解凍されます。
ZIPファイル名のフォルダーごとコピーするのではなく、その中の「PreventRestart」フォルダーをコピーしてください。
フォルダー構成は、
C:\PreventRestart-v1\PreventRestart
ではなく、
C:\PreventRestart
となっていることを確認してください。
次に「C:\PreventRestart」フォルダー内の3つのファイルのプロパティを確認してブロックされていないか確認してください。
セキュリティの説明が表示されている場合は「ブロックの解除」にチェックを入れ「適用」をクリックしてセキュリティの説明が消えたことを確認してから「OK」をクリックして閉じてください。
これを3つのファイルそれぞれについて確認してください。
以上の2点を確認して頂いても「見つかりません」となる場合は再度コメントを頂けませんでしょうか。
Solomonさま
拙い質問にも関わらず 早速のご指導に感謝申し上げます
最初から 総て仰せの様にやり直しましたら 完了しました、
有難うございました。
◆間違えた点
◎ご回答
フォルダー構成は、
C:\PreventRestart-v1\PreventRestart
ではなく
C:\PreventRestart
となっていることを確認してください。
でした。 済みませんでした。 感謝
ご返答を頂きありがとうございます。
無事動作したようでよかったです。
説明に分かり難い点があったことをお詫び致します。
記事の説明を修正させて頂きました。
非常に助かります。どうもありがとうございます。
コメントを頂きありがとうございます。
お役に立ったようで良かったです。
初めまして。
Google検索から来ました。
今回は質問ではなく、報告ということでコメントを残させて頂きます。
先ほど、上手く設定できているのに、離席していて再起動されてしまうという状況が起こりました。
しかし、アクティブ時間の始めを見ると9時になっていて、10時過ぎにその再起動を確認したので、タスクは復活しているようです。
もちろんスケジューラの方でも確認しましたが「準備完了」になっていました。
これって「タスクの競合」ですかね?
自分がWin10パソコンを手に入れ、改めて入れたタスクは「TimeTune」と呼ばれる時刻修正アプリをログオン後に起動するというもので、タスクとしては24時間「実行中」になっています。
しかし、時間を修正する挙動はアプリが行うもので、タスクは使いません。
あくまでも「ログオンしたら起動する」が順守されているだけなのです。
ですからこれである可能性は皆無ですよね…。
ちなみに私の環境は、Windows10 Pro 64bit Ver.1703です。
もし必要であれば他にも書きます。
例えば、アンチウィルスソフトはカスペルスキーで、C:\PreventRestartフォルダは除外してある、とかですね。
ということでした。
若干長くなってすみません。
以上で失礼致します。
また何かわかりましたら報告しようと思います。
コメントを頂きありがとうございます。
また、貴重な情報をご報告頂きありがとうございます。
まず、「Time Tune」を調べさせて頂きました。
Time Tune (窓の杜)
http://forest.watch.impress.co.jp/library/software/timetune/
時刻修正をNTP以外の方法でも行えるソフトとのことですが、御存知のようにWindows XP以降のWindowsではOS自体にNTPまたはWindows Serverと時刻を同期する機能が搭載されています。
このソフトは実時刻から一定時間パソコンの時計をずらす機能があるとのことで、この機能を使うなら必須ですが、正確に合わせるだけならWindowsの機能でも十分と考えております。
標準設定では1週間に1回しか調整しないため秒単位でズレますが、設定を変えることで1秒以下に抑えることは可能です。
Windows 7/8.1/10での時計の自動調整の設定方法(追記)
http://solomon-review.net/windows-ntp-interval/
ご報告にある、10時に自動的に再起動されてしまったことに関してですが、Windows 10ではアクティブ時間内であれば自動的に再起動されることはありません。
そして何もしなければデフォルトでは8時から17時がアクティブ時間となりますので10時に再起動されることはありません。
アクティブ時間の開始が9時になっていたのだとすればタスクが正常に起動したと考えられ、その時点での終了は21時になっていたはずです。
タスクが正常に実行されたかどうかは「タスク履歴」を有効にすることで「履歴」タブに表示される履歴から確認できます。
結局、何が言いたいかというと、
・10時はアクティブ時間内となっている可能性が非常に高い
・Windows 10自体はアクティブ時間内に自動再起動することはない
ということです。
したがって、他の要因、メーカー製パソコンならそのメーカーが提供するメンテナンスソフトや、その他のアプリが再起動の原因になっている可能性があります。
Time Tuneが原因とは考え難いです。
イベントビューアーで再起動される直前の記録を見るとヒントがあるかもしれません。
丁寧なご説明ありがとうございます。
なるほど…タスク履歴。
ちょっと設定して見てみようかと思います。
Time Tuneのいい所は、タスクスケジューラで起動を設定するだけで、後は全部お任せで良い所ですね。
記事を見せてもらいましたが、レジストリをユーザーがいじることもありませんし、時間調整に失敗した場合もタスクトレイのTime Tuneのアイコンが赤くなり、失敗したことを教えてくれます。
まあ、この辺は好みでしょう。
Windows10に限っては、レジストリが関係ない方法もあるみたいですし。
とりあえず、コメントを書き込んでから一度も勝手に再起動してしまい、困ったということはありませんでした。
ですから、「偶然」何かが作用して再起動したんでしょう。
Solomonさんが仰る通り、何か再起動を誘発するアプリかプログラムが無いか探してみます。
この度はありがとうございました。
今回の様な件でまた来ることがないことを祈ります。
コメントを頂きありがとうございます。
言われるようにWindows標準機能で済まそうとするといろいろ面倒なので、フリーソフトで済ますのが良いかもしれません。
Windows 10のレジストリが関係ない方法というのは見つかりませんでした。「設定」アプリではないですよね。
申し訳ありませんが実績ということですと、これまでに750回ほどダウンロードされていて、1回だけ、特定の時刻でタスクが起動しないとのコメントを頂きました。その時はこちらの環境では再現できませんでした。
もちろんすべての方が実際に導入したとは限りませんし、不具合が発生してもコメントを頂けていない可能性があります。それでも別の要因のような「気」がします。
こちらの評価環境はWindows 10しか入っていないので十分に確認できないところがあります。
とりあえず、イベントログとタスク履歴で何かしらのヒントがつかめるのではないかと思います。
お役に立てず申し訳ございません。
いえいえ!
とても貴重な情報を頂いたと感じておりますよ。
Windows10のレジストリが関係ない時刻同期設定というのは
>「Windows 10では「設定」アプリの「時刻と言語」の「日付と時刻」で「時刻を自動的に設定する」を一度「オフ」にしてから「オン」に戻すことで即座に同期が行われます。」
のことで、まさしく「設定」アプリ のことです。
紛らわしくて申し訳ありません。
そして本題ですが、問題も何も引き続き再起動なしで運用出来ていて、本当に助かっています。
一応タスク履歴も有効な状態にしましたので、今度「もしも」同じことが起これば報告できると思います。
この度は重ねてありがとうございました。
コメントを頂きありがとうございます。
「設定」アプリでの「時刻を自動的に設定する」は簡単でよいですね。あまり時刻がズレるのが気にならなければ、気付いたときにこれで合わせれば十分かもしれません。
こちらでの評価は基本的に仮想環境で行っていますので、実機での不具合が見つけられないことがあります。
問題が発生した場合は教えて頂けると大変助かりますのでよろしくお願い致します。
Solomon様
非常に優れたツールのご提供、ありがとうございます。
不意にwindows-pcが再起動されてしまうのは、仕方ないものと半ば、
あきらめていたのですが、当ツールに出会えて、
連続無停止運用が安定して行えるようになりました。
深く感謝しております。
<追伸>
当ホームページのご説明や論理展開についても、
非常に分かりやすい内容でした。
あなた様の益々のご発展、心よりお祈りいたします。
コメントを頂きありがとうございます。
お役に立ったようでよかったです。
私の環境も自動再起動を抑止できるようになったのでVPNサーバーをWindows Home Server 2011からWindows 10に移すことができました。
セキュリティレベルを高い状態に保つために必要な措置であることは分かります。しかし、クライアントパソコンと言えどセキュリティより優先すべきことはありますので、再起動を止められないようにするのは行き過ぎと思えます。
今日の21H1でも有用で、助かっています。
ただしあるときF-Secureに削除されたため、ウイルス対策ソフトの監視対象外フォルダに設定しておく必要がある。以上、報告になります。
コメントを頂きありがとうございます。
また、情報を御提供頂きありがとうございます。
Windows 10や一般に販売されているアプリケーションソフト以外で、レジストリを書き換えるスクリプトだから、ウイルスなどと扱われるのでしょうね。
頂いた情報を記事に追記させて頂きました。