Windows 10 バージョン1607以降で自動再起動を止める方法

Windows 10 バージョン1607からWindows Updateでの更新の適用後、自動再起動を止められなくなりました。

設定用パッケージの仕様

今回、作業を単純化するために以下の仕様で固定しています。変更する場合はパッケージ内の該当部分を自分で書き換える必要があります。

  • スクリプトファイルの置き場所は、「C:\PreventRestart」で固定
  • スクリプトファイル名も固定
  • アクティブ時間は任意のユーザーがログオンした時点から12時間に設定される
  • 以後、6時間ごとにアクティブ時間を後ろに6時間ずらすように自動更新する
  • 自動更新に失敗した場合は30分間隔で3回まで再実行される

PC起動時点から12時間をアクティブ時間とし、半分まで経過したら更に半分延長します。これをPCを起動している限り延々繰り返します。半分まで過ぎたら延長する方法はDHCPアドレスのレンタル期間更新方法を参考にしています。

 

設定手順

設定は最初に一度だけ行えば以後は何もする必要はありません。

まず、こちらから再起動防止パックをダウンロードしてください。セキュリティソフトなどでマルウェアやウイルスと検知された場合は最後に示す方法で自分でファイルを作成してください。Windows DefenderおよびG Dataでは問題ありませんでした。

 

ダウンロードしたら、ファイルを右クリックして表示されたメニューから「プロパティ」をクリックします。

「全般」タブの下部の「ブロックの解除」にチェックを入れ「適用」をクリックします。

Windows10-v1607-prevent-restart-14

「セキュリティ」の説明が消えたことを確認して「OK」をクリックして「プロパティ」を閉じます。

この操作は必ず展開前のZIPファイルで行います。そうしないと展開したファイル全てがブロックされて解除に手間がかかります。

Windows10-v1607-prevent-restart-15

ダウンロードしたファイルを展開します。

展開すると「PreventRestart」というフォルダーがありますのでフォルダーごとCドライブの直下にコピーします

ZIPファイ名のフォルダーではなく、その中の「PreventRestart」というフォルダーをコピーします。

コピー後のフォルダー構成は、

C:\PreventRestart-v1\PreventRestart

ではなく、

C:\PreventRestart

となっていることを確認してください。

コピーしたらダウンロードしたファイルと展開したファイルは削除してかまいません。

Windows10-v1607-prevent-restart-12

コピーしたフォルダー「C:\PreventRestart」を開くと3個のファイルがあります。

Windows10-v1607-prevent-restart-13

次に、タスクを登録するためにタスクスケジューラを起動します。

Cortanaで「タスク」と入力すると「タスクスケジューラ」が表示されるのでクリックします。

Windows10-v1607-prevent-restart-02

「タスクスケジューラ」の左側で「タスクスケジューラライブラリ」を選択し、右側の「タスクのインポート」をクリックします。

Windows10-v1607-prevent-restart-03

先ほどコピーした「C:\PreventRestart」フォルダーを開き、「PreventRestart.xml」を選択して「開く」をクリックします。

Windows10-v1607-prevent-restart-04

「タスクの作成」が表示されるので「OK」をクリックして閉じます。

このダイアログで細かい設定を変更できますが、必要ならば後で「プロパティ」から再度開くことができます。

Windows10-v1607-prevent-restart-05

「PreventRestart」タスクが登録されます。

登録直後は「無効」になっているので、「PreventRestart」タスクを選択して右下の部分の「有効化」をクリックします

Windows10-v1607-prevent-restart-10

有効になると表示は「準備完了」となります。

Windows10-v1607-prevent-restart-11

これでアクティブ時間の自動更新の準備ができましたのでPCを再起動してください

動作を確認するには「設定」アプリを開き、「更新とセキュリティ」をクリックして、

Windows10-v1607-prevent-restart-16

左側の「Windows Update」を選択し、右側の「アクティブ時間の変更」をクリックします。

Windows10-v1607-prevent-restart-17

「開始時刻」がPCを起動した時刻の00分、例えばAM5:30に起動したならAM5:00に、終了時刻がその12時間後に設定されていれば正しく機能しています。「キャンセル」をクリックして閉じます。

6時間以上経ってから再度確認して、アクティブ時間が変わっていれば更新も正しく行われています。

アクティブ時間が正しく設定されていない場合は、タスクスケジューラを起動して、「PreventRestart」タスクが「無効」ではなく「準備完了」になっていることを確認してください。なっていない場合は右下の部分で「有効化」をクリックしてください。

Windows10-v1607-prevent-restart-18

 

元に戻す場合

アクティブ時間の自動更新をやめる場合は、「タスクスケジューラ」を起動してから「PreventRestart」タスクを選択して「削除」してください。

そして、再起動してから「C:\PreventRestart」フォルダーを削除してください。

 

ウイルス対策ソフトにブロックされる場合

スクリプト内でレジストリーを操作しているため、ウイルス対策ソフトによっては実行をブロックされる可能性があります。

その場合は、「C:\PreventRestart」フォルダーを除外登録してみてください。

また、スクリプトパックをダウンロードできない場合は、下記の手順でファイルを作成してください。

ファイル名は必ず同じ名前にしてください。変更する場合はファイル名、パス、及び、各ファイル内の黄色の部分を書き換える必要があります。

ファイル名:PreventRestart.bat

@echo off
set /a ACTIVE_HOURS_START=%TIME:~0,2%
set /a ACTIVE_HOURS_END=(%ACTIVE_HOURS_START% + 12) %% 24
reg add "HKLM\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v ActiveHoursStart /t REG_DWORD /d %ACTIVE_HOURS_START% /f
reg add "HKLM\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v ActiveHoursEnd /t REG_DWORD /d %ACTIVE_HOURS_END% /f

 

ファイル名:PreventRestart.vbs
改行せず一行で記述します。

CreateObject("WScript.Shell").Run "cmd /c ""c:\PreventRestart\PreventRestart.bat""", 0

 

ファイル名:PreventRestart.xml

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<URI>\Prevent Restart</URI>
</RegistrationInfo>
<Triggers>
<LogonTrigger>
<Repetition>
<Interval>PT6H</Interval>
<StopAtDurationEnd>false</StopAtDurationEnd>
</Repetition>
<Enabled>true</Enabled>
</LogonTrigger>
</Triggers>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>false</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
<Priority>7</Priority>
<RestartOnFailure>
<Interval>PT30M</Interval>
<Count>3</Count>
</RestartOnFailure>
</Settings>
<Actions Context="Author">
<Exec>
<Command>C:\Windows\System32\wscript.exe</Command>
<Arguments>"c:\PreventRestart\PreventRestart.vbs"</Arguments>
</Exec>
</Actions>
</Task>

 

まとめ

とても単純ですが比較的簡単に設定できるため、自動再起動に困っている場合は設定してみては如何でしょうか。

「再起動防止パック」は、2018年3月末時点で1,500回ほどダウンロードされています。

バグについてはコメントで指摘を受けた1点については再現できず、その他の指摘は現状まではありません。

アクティブ時間の自動設定は簡単な操作なので常駐型のソフトを誰かが作ってくれればよいのですが。

なお、Windows 10 バージョン1703/1709にアップデートしても設定は引き継がれ、何もしなくても正常に動作し続けることを確認しています。

カテゴリーALL

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です