Windows 11/10では自動更新を止めることが難しくなりました。もちろん検索すればグループポリシーなどで止めたりする方法は見つかります。しかし、それではWindowsセキュリティの更新など再起動が不要な更新まで止めてしまいます。
問題となるのは更新ではなく勝手に再起動されることです。
Windows 10での自動再起動防止
Windows 10での自動再起動防止についてはこちらの記事で説明しました。
アクティブ時間を変更して再起動を防止していたのですが、その後、アクティブ時間はパソコンが勝手に判断し、勝手に設定してしまうようになりました。
Windows 11でのアクティブ時間
Windows 10でのアクティブ時間の自動設定の考え方はWindows 11でも踏襲され、デフォルトでは自動で設定されてしまいます。
アクティブ時間の考え方は、毎日決まったスケジュールで作業する場合はよいのですが、その日によって使う時間帯が違うと自動で決められたアクティブ時間は全く意味を成しません。だからといって手動で設定しようとしても設定可能範囲は最大18時間です。睡眠時間6時間を除外すれば18時間なら十分とも言えますが、それを超えてスケジュールが毎日変動する人もいると思います。
そして、録画専用パソコンなど24時間稼働を前提として運用している場合もあるでしょう。
いっそのこと、どの時間帯であろうと「サインインしている間はアクティブ時間」と設定してしまえばよいことになります。
自動再起動防止スクリプト ver.2
「タスクスケジューラ」の仕様が変更になったようで、以前の設定では繰り返しの実行ができなくなりました。これはWindows 11だけではなく、最新のWindows 10でも同様です。
以前はトリガーとしてシステムの起動やログインを利用した場合、そのトリガーの完了日時を繰り返しの起点として設定されていたようです。しかし、最近のタスクスケジューラでは開始日時を指定したトリガーでしか繰り返しが実行されないようです。
このタスクスケジューラーの動作の詳細については、こちらの記事で説明していますが、この記事で説明する自動再起動防止方法はタスクスケジューラーの仕様変更に対応済みです。
また、アクティブ時間自動設定が既定となったため「手動」に設定しています。最大のアクティブ時間も12時間から18時間に変更になったため終了時刻を更新時から18時間後に変更しています。
これらの設定はレジストリに書き込みますが、Windows 11とWindows 10でレジストリの場所が違うため、どちらのWindowsで実行しても両方の値を書き込みます。実行中のWindowsで不要な値は参照されないため影響はありません。
以前の記事で設定済みの場合
以前の記事で既に設定している場合は、その記事の「元に戻す場合」を参照して古いタスクとファイルを削除してください。
古いタスクとファイルでは、最近のWindows 11/10では正しく動作しません。
削除後、以下の手順で設定し直してください。
新規の設定手順
このスクリプトをはじめて登録する場合の手順を説明します。
以下、手順はWindows 11 バージョン22H2で説明します。Windows 10 バージョン22H2でもほぼ同じです。
1.スクリプトの準備
まずこちらのファイルをダウンロードしてください。
Windows 11/10での自動再起動を防止するためのスクリプトパックのバージョン2です。
すぐに展開せずにダウンロードしたファイルを右クリックして、メニューから「プロパティ」を開きます。「全般」タブの「セキュリティ」部分の「許可する」にチェックを入れて「適用」をクリックします。
「セキュリティ」部分が消えたことを確認して「OK」で閉じます。
準備ができたのでダウンロードしたファイルを任意のフォルダーに展開します。
展開したフォルダーに「PreventRestart」というフォルダーがあるので、Cドライブの直下にコピーします。コピー後は、
C:\PreventRestart
となっている必要があります。フォルダー名を変えると動作しません。
2.タスクの登録
次に「スタート」メニューを開いて検索窓に「task」と入力します。検索結果に「タスクスケジューラ」が表示されるのでアイコンをクリックして起動します。
「タスクスケジューラ」の左側で「タスクスケジューラライブラリ」を選択して、右側の「タスクのインポート」をクリックします。
先ほどの「C:\PreventRestart」を開いて「PreventRestart-v2.xml」を選択して「開く」をクリックします。
「タスクの作成」が表示されますので、何も変更せずに「OK」で閉じます。これでタスクが登録されます。
タスクリストにインポートした「PreventRestart-v2」が表示されていますが、「準備完了」とならず「無効」となっている場合は、右側で「有効」をクリックします。
中央部分に「準備完了」と表示されればタスクの準備は完了です。
3.セキュリティソフト対策
以前の記事にコメントで頂いた情報によると、自作スクリプトなどをブロックするセキュリティソフトがあるそうです。そのため予めセキュリティソフトに除外登録をしておきます。
ここではWindowsセキュリティ(Windows Defender)で説明します。他のセキュリティソフトの場合は「除外」という項目を探して登録してください。なおWindowsセキュリティではブロックされません。
「Windowsセキュリティ」を開きます。
左側で「ウイルスと脅威の防止」を選択して、中央の「ウイルスと脅威の防止の設定」の「設定の管理」をクリックします。
中央部分をスクロールさせて最後の「除外」の「除外の追加または削除」をクリックします。
「+除外の追加」をクリックします。
選択肢が表示されるので「フォルダー」をクリックします。
先ほどコピーした「C:\PreventRestart」選択して「フォルダーの選択」をクリックします。
指定したフォルダーが登録されたのを確認して「Windowsセキュリティ」を閉じます。
4.実行テスト
準備は整いましたのでパソコンを再起動してサインインします。
「設定」アプリを起動して「Windows Update」の「詳細オプション」を開きます。
「アクティブ時間」をクリックして、
- アクティブ時間を調整する:手動
- 開始時刻:現在の時刻の時
- 終了時刻:18時間後
になっていれば正常に稼働しています。
アクティブ時間の更新は、
- ログオン(サインイン)したとき
- 0:10
- 6:10
- 12:10
- 18:10
に実行されます。
タスクスケジューラの仕様変更により、「ログオン時刻から6時間おきに更新する」というタスクは作れなくなりました。
24時間稼働に対応させる
ここまでの設定で、ほとんどの人には十分でしょう。
個人ではパソコンを道具として使うので再起動されて困るのは、何かしらの用事でパソコンから離れている間に作業状態を保存せず再起動されることです。すなわちログオン(サインイン)してからパソコンをシャットダウンするまでです。
そのように想定したので、タスクの実行はログオンしていることが前提となっています。
しかし、一部にはパソコンにログオンしないで使う用途もあります。NASや録画サーバー、VPNサーバー、パーソナルクラウドなどです。
上記の設定をこれらのパソコンにするとこのようにタスクの実行が失敗します。
詳細を見てみると「ログオンしていなかったため」失敗したとあります。回避するには「ユーザーがログオフしているときに起動を許可するように」設定を変更するようにとあります。
それでは、提案どおりに設定を変更してみましょう。
「PreventRestart-v2」タスクを選択して右下の「プロパティ」をクリックします。
表示されたプロパティ画面で「全般」タブを選択すると「ユーザーがログオンしているときのみ実行する」が選択されています。
「ユーザーがログオンしているかどうかにかかわらず実行する」に変更して「OK」をクリックします。
このタスクを実行するユーザーアカウント情報を聞いてきます。
「ユーザー名」には自分のアカウントが表示されます。
「パスワード」は空欄ですので自分のアカウントのパスワードを入力して「OK」で閉じます。パスワードが間違っていなければこのダイアログとプロパティ画面が閉じます。
タスクスケジューラで「全般」タブを確認すると「ユーザーがログオンしているかどうかにかかわらず実行する」が選択されていれば設定完了です。
この状態で6時間以上ログオンしないでタスクの履歴を確認すると、ログオンしていなくてもタスクが実行されたことを確認できます。
なお、履歴を見るには予め右上の「操作」にある「すべてのタスク履歴を有効にする」をクリックしておく必要があります。「すべてのタスク履歴を無効にする」と表示されていれば履歴を見れる状態です。
なお、ログオンしていない時に時刻で指定されたタスクが実行されると、実行に伴うログオンがトリガーと認識され同じタスクを起動しようとします。同時に複数のタスクは実行されないため、ログオンをトリガーとしたタスクは実行されず、履歴には黄色の警告として残ります。実害は無いので無視してください。
元の状態に戻すには
この記事で登録した設定をやめる場合は「タスクスケジューラ」を起動して、中央部分で「PreventRestart-v2」を選択して、右側の「削除」をクリックします。
削除の確認が表示されるので「はい」をクリックして削除します。
「タスクスケジューラ」を閉じて、「C:¥PreventRestart」フォルダーを削除します。
アクティブ時間は「手動」になったままですので、「自動的に確認する」に戻します。
設定ソフトについて
以前の記事の後、Windows 10の自動更新をコントロールするソフトが公開されました。
こちらのソフトはGUIで細かく設定することができます。タスクスケジューラと常駐型ソフトを使って、サービスの起動を頻繁に監視することで自動更新や自動再起動を抑止しています。
自動再起動防止については、仕組み上はWindows 11でも問題ないはずですが、Windows 11リリース(2021/10/05)以前の2019/01/06から更新されていないため、Windows 11は対応環境から外れています。
また、「Microsoft Store」アプリから入手できるMicrosoftから提供されている「PowerToys」というアプリにも「Awake」というツールが搭載されました。
Awakeは電源プランを書き換えることなく、一時的に画面がオフになったりスリープ状態になることを防ぐものです。Awakeの詳細についてはこちらで説明されています。
ただし、PowerToysはVPNサーバーなどサービスとして機能するPCに対するものではないため、サインインせず24時間稼働させるPCなどで期待通りの動作をするかは分かりません。
まとめ
Windows 11ではレジストリが変更になっていたため更新しました。
以前と異なり設定ソフトも出ていますので、使いやすい方法で設定すればよいでしょう。
再起動防止で検索すると自動更新防止方法がたくさん見つかりますが、市販セキュリティソフトを使わずWindowsセキュリティ(Windows Defender)を使っている場合は、絶対に自動更新を止めてはいけません。止めることでハッキングに合うリスクが格段に上がってしまいます。
コメント