Windows10のWindowsUpdate後の自動再起動をbatで完全に阻止する話
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

Windows10のWindowsUpdate後の自動再起動をbatで完全に阻止する話

2016-10-08 12:20
  • 9
  • 2
以前きたWindows10のAnniversaryUpdateで、「再起動するように通知する」という設定項目が消えました


そのため、WindowsUpdateした後は特にPCを使っていなければ勝手に再起動されます。
エクセルやらで未保存のデータがあろうが、動画エンコしてようが、とりあえずPCを使ってなければ再起動されます。
多分マウスとかキーボード入力を見て判断してる感じ・・・?です。10分以上触ってないとかそんな感じで。
(最悪動画見てるだけで再起動させられそう)

じゃあゲーム中などにご飯食べたり、トイレ行ったりしたら勝手に再起動されるかもしらんの?ってわけですが、一応回避方法が用意されています。それがアクティブ時間です。


ここでアクティブ時間を設定できます。そこに設定された時間は、たとえPCを放置していても「再起動する?」という通知が来るだけとなります。
じゃあこれを0時~0時にすれば大丈夫やんw かと思いきや
これ、最大12時間しか設定できません。
強制再起動を回避できるのは24時間中12時間だけです。厳選して設定しましょう!!

なんてやってられるか!!!!

と、ここで思うわけです。数時間ごとにこのアクティブ時間を変更してしまえば常にアクティブ時間になるのでは・・・?
ということで試してみましょう。

・アクティブ時間が保存されてる場所を探す
こういうのは大抵レジストリにあるだろw ってことでアクティブ時間を探してみます。
英語名だとActive Hourというらしいので、それで検索を掛けてみるとありました。



場所は「HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsUpdate/UX/Settings」になります。
とりあえずレジストリエディタ側から値を変更。その後に設定の方を覗くと・・・変わってる!!!
つまりここの値をbatなどで変更してあげれば良さそうです。

・batで現在時刻から適切なアクティブ時間を書き込む
流れとしては
1. 現在時刻を取得する
2. ±5などでアクティブ時間の開始、終了時間を出す
3. レジストリの値を更新する
これでなんとかなりそうです。
ということでそれが下のものになります。メモ帳にコピペで動かせるはず。
--------
@echo off
set NOW_HH=%TIME:~0,2%

set /a START_TIME=NOW_HH-5
set /a END_TIME=NOW_HH+5

if %START_TIME% lss 0 (
set /a START_TIME=%START_TIME%+24
)
if %END_TIME% gtr 24 (
set /a END_TIME=%END_TIME%-24
)

reg add "HKLM\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v ActiveHoursStart /d %START_TIME% /t REG_DWORD /f
reg add "HKLM\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v ActiveHoursEnd /d %END_TIME% /t REG_DWORD /f
--------
処理内容としては、
1. set NOW_HHに現在の時間を取得(12:34:56.78の形になってる)して、時間部分を抜き出して保存
2. set /a START_TIME, END_TIMEで時間±5を保存
時間によっては開始が-3とか、終了が26とかになるので、24h表記になるようにします(この場合は開始21、終了2)
21時~3時という指定もできるので、このやり方で大丈夫です。
3. reg addで各値をレジストリに書き込みます。

あとはこれをタスクスケジューラーで定期実行させれば良いですが、このままだと一瞬コマンドプロンプトの黒い画面が表示されるので、表示させないようにします。
よくあるのはVBSを使って、VBS内で実行させる方法なので、そちらを採用します。

--------
Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c ""C:\nantoka\aa\change_active_time.bat""", vbhide
--------

batと同じく、これをメモ帳に貼り付けて保存。拡張子を *.vbs に変更します。
"cmd /c ""*.bat""" の部分は、batファイルのフルパスを入れてください。
あと、パスにスペースが入るかもなので、"cmd /c ""C:\nantka\aa\wu.bat"""と、batのパス部分だけ2つの「"」で囲っています。(文字列内に「"」を入れるため)
batを実行すると、一瞬黒い画面が出ますが、vbsの方では黒い画面が出ません。

・タスクスケジューラーで定期実行
保存したら、コントロールパネル→管理ツール→タスクスケジューラー を起動します。
操作→基本タスクの作成 でタスクを作成します。
トリガーは一応ログオン時(PC起動時)で作成します。起動時に一応設定しておきたいし。
操作は「プログラムの開始」になります。
参照から、さっきのvbsを選択します。
タスク作成後、そのタスクのプロパティを開くとトリガーを追加できます。
そこに毎日○時で登録します。



ぼくは○時1秒に実行されるようにしましたが、0秒でも問題ないと思います。
±5時間でbatを動かすので、まぁ4時間ごとぐらいでいいんじゃないかなと。

これでタスクが作成できました。
タスクのとこを右クリすると、「実行する」という項目が出てくるので、アクティブ時間を適当な時間に設定してから実行してみましょう。
無事現在時刻±5の時間が設定されたら勝利です。
終わり。


本来ならこんな面倒なことをしなくても、ちゃんと設定できるべきな気がするよね。
まぁセキュリティうんぬん考えたらこうなったんだろうけども・・・
よく寝てる間に放置してPC動かしてたりするので、勝手に再起動されたら困るんだよね。
別にWindowsUpdateをしたくないわけじゃないけど、再起動タイミングは自分でいじらせてくれ。って感じです。
まだこれを動かして間もないですが、以前再起動が要求されるWindowsUpdateを入れてから寝ましたが、再起動されることはありませんでした。
安定稼働するかは保証しませんが、今のところぼくは大丈夫です!!!
ではでは。
広告
×
参考にさせていただきました
ただ、最後のプロパティでトリガーを追加した際に"1つ以上の指定された引数が有効ではありません"と表示されて設定した項目が反映されません。なぜだかご存じないでしょうか?
8ヶ月前
×
>>1
その現象になったことがないのでわからないですが、調べた限りだと「全般タブ」の下の方にあるセキュリティオプションが悪さをしているようです。
参考までに私の設定を載せておきます。
タスクの実行時に使うユーザーアカウントはメインのアカウント(管理者権限所持)にしています。
その下は「ユーザーがログオンしているときのみ実行する」の方を選択しています。
「最上位の特権で実行する」にはチェックを入れていません。

調べた際に見たサイトをいくつか載せておきます。
・「1つ以上の指定された引数が有効ではありません」というエラー
http://sookibizviz.blog81.fc2.com/blog-entry-1412.html
・Windows/タスクスケジューラでパスワードがないと
http://mw211.com/devlog/?date=20131021

2つ目の「Windows/タスクスケジューラでパスワードがないと」がわかりやすかと思いますので、こちらを参考にタスクスケジューラーを登録して頂ければ問題ないかと思います!!!
8ヶ月前
×
今日はありがとうございます
劇的な改善が見られました
7ヶ月前
×
アクティブ時間のバグ見つけました。
アクティブ時間のBatでアクティブ時間開始が13時~の指定になった場合、アクティブ時間がデフォルトの8~17時になるバグ。自分の環境では再現性100%のバグです。
でも、アクティブ時間開始の時間が13時にならないように避ければ問題ないこともわかりました。

アクティブ時間開始が12時の時は発症せず。14時の時も発生せず。なぜかアクティブ時間が13時開始の時のみ発生するバグです。
7ヶ月前
×
>>4
あと、参考までに月例定期アップデートの配信日は毎月第2火曜日の次の日の午前3時です。この時間帯に月1のセキュリティアップデートは配信されます。
7ヶ月前
×
>>4
んー、僕の環境では再現されませんね。(set NOW_HH=18とすることで確認)
対策するとしたら、
if %START_TIME% equ 13 (
set /a START_TIME=%START_TIME%+1
)
を挟むぐらいですかね。
7ヶ月前
×
(ソフト・ハード等の)何が悪くてこんな奇妙な現象が起きているのかはわかりませんが、対策法を教えていただきありがとうございます。
7ヶ月前
×
このツールを見つけたのですがどうでしょうか?

Windows10 設定変更ツール
http://www.asahi-net.or.jp/~tz2s-nsmr/WinUpdateSettings.html


6ヶ月前
×
WindowsUpdateサービスを停止させることはあまりよくありません(セキュリティ的な問題から)
アップデートを強制するならするで、時間ぐらいは自由に選ばせてくれ。というのが今回の目的なので、そもそもサービスを停止するのは少し違うかなと思います。(例えばPCをシャットダウンするタイミングで自動実行、ぐらいが理想でしょうか)

セキュリティ的な問題があるからこそ、Win10Homeでは強制なのかなと思います(Pro以上のユーザーは勝手になんとかするので、手動にする設定が可能かなと)
まぁWindowUpdateに関してたまに変な不具合を発生させるのは、Microsoft頑張ってくれという感じですが!
6ヶ月前
コメントを書く
コメントをするには、
ログインして下さい。