Windows 10 Home で Windows Update を自動適用させないようにしたい
2016年5月4日 記事訂正
外出先でdocomoのLTE通信タブレットのテザリングを有効化して、Windows 端末からネットを利用したりVPNで自宅LANに接続するということをよくします。この時、Windows Updateが適用されてしまって、docomoのパケホーダイ上限値の7GBを超えてしまい、128Kbps速度制限が適用されて不便な思いをしました。
このようなことにならないようにするために、テザリング時にWindows Updateを適用させないことだけに着目するという狭い視野での切り口から生じた解決策としてWindows Update Service を一定条件下で停止する記事をきました。
くまっ太さんよりコメント欄にて「従量制課金接続として設定するをONにする」方法を教えていただきました。ご指摘を受けまして、適切で単純明快な解決策を知りました。
くまっ太さんありがとうございました。
そこで記事を修正しました。ネットでは既出ですが備忘録ということで。
外出先でテザリングし、パケットを食いつぶさないようにWindows 10 PCを利用するために以下の3点の設定をするのが好ましいようです。
- 従量制課金接続として設定するをONにする
- ストアアプリの自動更新をOFFにする
- バッテリー節約機能を利用する
従量制課金接続として設定するをONにする
従量制課金接続: よく寄せられる質問 - Microsoft Windows ヘルプ
http://windows.microsoft.com/ja-jp/windows-8/metered-internet-connections-frequently-asked-questions
ストアアプリの自動更新をOFFにする
従量制課金接続のOFFで「Windows ストアからのアプリのダウンロードが一時停止される」とあるので、ここでストアアプリの自動更新をOFFにする意味があるかわかりませんが念のため。
バッテリー節約機能を利用する
バッテリーインジケーターをクリックしてバッテリー節約機能を有効化します。
LINEの通知は受け取りたいので設定しておきます。
(ここまでに参考にしたところ)
[Win10] 外出時にWindows Updateを制限する方法 – エンジニアの生活
http://xinroom.net/win10-billing-connection/Windowsの小ネタ - モバイルルーター使用時の通信量を節約しよう
http://win-tab.net/misc/network_cost_150814/
以下は訂正記事前のものです。見当違いの対応となりますが、イベントビューアのログをトリガーにしてコマンドを自動発行する備忘録として残しておきます。
従量制課金接続をONにしても優先度の高いWindows Update は適用されるようです。セキュリティを考えればテザリングでも優先度の高い Windows Update は適用すべきなので Windows Update Service を停止してしまうのは好ましいと思えません。
自宅のWiFiに接続していようが、自分のタブレットでテザリングし、外出先で自分のPCからネット接続していようが、そんなことお構いなしに Windows Update は自動適用されてしまいます。
ファイル容量が小さければいいのですが、大きいとdocomoのパケホーダイダブル7GBをすぐに食いつぶしてしまうほどです。2か月連続でWindows Update(だけじゃないですが大部分がこれ)に食いつぶされて128Kbpsに速度制限されてしまいました。かなり不便でしたね。
128Kbpsに速度制限されている間、SIMカードをIIJ MIMOに入れ替えたのですが、SH-08Eだとテザリングできないんですね。仕方ないので、IIJ MIMOにSIMカードを装着した XPERIA Z4 タブレット SIMフリー からテザリングして、Windows 10端末を使用しました。
Windows 10 Home にはローカルグループポリシーエディタが搭載されていませんので、ポリシー編集による Windows Update 適用を自動から手動に切り替えられません。関連レジストリの編集での対応もできないそうです。
Windows 10の自動更新(Windows Update)を無効にする方法 – iBitzEdge
https://i-bitzedge.com/tips/windows-auto-update-disable-windows-10
上記のサイトで Windows Update Service を無効にすればよいとあったので、そうしてみました。
ファイル名を指定して実行から「services.msc」でサービスを起動します。この作業には管理者権限が必要です。
デフォルトは下記のようになっていました。スタートアップが「手動」になっていたのが気になります。特に自分で意識してWindows Update Service を起動してませんし。
停止しました。
再起動で再び実行されても困るので「無効」にしておきました。
セキュリティを確保するためにはWindows Updateを適用するのが必須だと思いますので、テザリングによるWiFi環境を脱したら、つまり自宅に帰宅したら元に戻そうと思います。
ただ、自宅に帰るたびに上記のことをするのも面倒だし、忘れそうなのでコマンドで対応しようと思います。下記コマンドファイルをデスクトップに置いておいてダブルクリック実行という感じです。
Windows Update Serviceの停止 ※管理者として実行必要
net stop wuauserv
Windows Update Serviceの開始 ※管理者として実行必要
net start wuauserv
Windows Update Serviceの実行状態を確認
sc query wuauserv
<Windows Update Service実行中にコマンド実行した結果>
SERVICE_NAME: wuauserv
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
Windows Update Serviceのスタートアップの種類を確認
sc qc wuauserv
<Windows Update Service実行中にコマンド実行した結果>
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: wuauserv
TYPE : 20 WIN32_SHARE_PROCESS
START_TYPE : 3 DEMAND_START
ERROR_CONTROL : 1 NORMAL
BINARY_PATH_NAME : C:\WINDOWS\system32\svchost.exe -k netsvcs
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : Windows Update
DEPENDENCIES : rpcss
SERVICE_START_NAME : LocalSystem
(コマンドの参考)
Tech TIPS:scコマンドでWindows OSのサービスを確認/一覧/開始/停止する - @IT
http://www.atmarkit.co.jp/ait/articles/1505/25/news028.html
実装
自宅に帰ったり、外出先からパソコンを使うたびにコマンドを投入するのは面倒です。
外出先では AQUOS SH-08E や XPERIA Z4 Tablet でテザリングを有効化し、その接続先にASUS X205TA から接続します。そこでWiFi接続確立時に、WiFi接続先SSIDと状態をチェックし、テザリング対象のSSIDであれば、Windows Update Service を開始するかしないか問い合わせるようにします。自宅WiFiに接続した場合で Windows Update Service が停止していた場合は、Windows Update Service を自動起動します。WiFi接続のキャッチアップにはイベントビューアーのログを拾います。
キャッチすべきイベントは
アプリケーションとサービスログ - Microsoft - Windows - WLAN-AutoConfig - Operatinal の イベントID8001
です。
WiFi接続確立時に出力される上記のイベントをキャッチしてコマンドを実行します。
※SSID名でチェックするので厳密性には欠けますが、まあいいでしょう。
簡単にですがコマンドファイル「CheckWLAN.cmd」、「CheckWindowsUpdateServiceMyHome.cmd」、「CheckWindowsUpdateService.cmd」の3つのコマンドを作成しました。接続先SSIDチェックは一般権限で動作しますが、Windows Update Serviceの開始停止は管理者権限が必要なためコマンドを分割しました。UACに応答するのも面倒だからです。
- CheckWLAN.cmd
WiFi接続確立のイベントビューアーログをキャッチアップして、接続したSSIDをチェックします。自宅SSIDに接続した場合は2を、テザリングSSIDに接続した場合は3を実行します。
- CheckWindowsUpdateServiceMyHome.cmd
Windows Update Service が実行中であれば何もせず、Windows Update Service が停止中なら起動します。
- CheckWindowsUpdateService.cmd
Windows Update Serviceの状態をチェックし、開始中なら停止するか?停止中なら開始するか?ユーザに指示を仰ぎます。
管理者権限が必要なNETSHコマンドの実行
サービス起動のためのNETSHコマンドは管理者権限で呼び出さなければならないので、2・3のコマンドはショートカットを作成しそれを呼び出します。ショートカットのプロパティで管理者として実行にチェックをつけておきます。
※自宅SSIDは適当な値にしています。
CheckWLAN.cmd
@ECHO OFF
SET ScriptsFolder="D:\Scripts\"
NETSH WLAN SHOW INTERFACES | FINDSTR "SH-08E_AP" && GOTO CHECKWLANSTATUS
NETSH WLAN SHOW INTERFACES | FINDSTR "Xperia Z4 Tablet_565c" && GOTO CHECKWLANSTATUS
NETSH WLAN SHOW INTERFACES | FINDSTR "106F3FE8F85C" && GOTO CHECKWLANSTATUSMYHOME
NETSH WLAN SHOW INTERFACES | FINDSTR "WZR-AGL300NH_A" && GOTO CHECKWLANSTATUSMYHOME:CHECKWLANSTATUS
CALL "%ScriptsFolder%\CheckWindowsUpdateService.cmd - ショートカット.lnk"
GOTO :EOF:CHECKWLANSTATUSMYHOME
SC QUERY WUAUSERV | FINDSTR "RUNNING" && GOTO :EOF
SC QUERY WUAUSERV | FINDSTR "STOPPED" && CALL "%ScriptsFolder%\CheckWindowsUpdateServiceMyHome.cmd - ショートカット.lnk"
CheckWindowsUpdateServiceMyHome.cmd
@ECHO OFF
NETSH WLAN SHOW INTERFACES | FINDSTR "接続されました" && GOTO CHECKWUAUSERV || GOTO :EOF
:CHECKWUAUSERV
SC QUERY WUAUSERV | FINDSTR "RUNNING" && GOTO :EOF
SC QUERY WUAUSERV | FINDSTR "STOPPED" && GOTO STOPPED:STOPPED
ECHO "%STR_INPUT%:Windows Update Service を開始します。"
NET START WUAUSERV
SC QUERY WUAUSERV
SC QC WUAUSERV
PAUSE
CheckWindowsUpdateService.cmd
@ECHO OFF
NETSH WLAN SHOW INTERFACES | FINDSTR "接続されました" && GOTO CHECKWUAUSERV || GOTO :EOF
:CHECKWUAUSERV
SC QUERY WUAUSERV | FINDSTR "RUNNING" && GOTO RUNNING
SC QUERY WUAUSERV | FINDSTR "STOPPED" && GOTO STOPPED:RUNNING
ECHO "Windows Update Service は実行中です。"
SET /P STR_INPUT="Windows Update Service を停止しますか?(Y/N): "
IF "%STR_INPUT%" == "y" (
ECHO "%STR_INPUT%:Windows Update Service を停止します。"
NET STOP WUAUSERV
) ELSE IF "%STR_INPUT%"=="Y" (
ECHO "%STR_INPUT%:Windows Update Service を停止します。"
NET STOP WUAUSERV
) ELSE (
ECHO "%STR_INPUT%:Windows Update Service は実行中です。"
)
GOTO STATUS:STOPPED
ECHO "Windows Update Service は停止中です。"
SET /P STR_INPUT="Windows Update Service を開始しますか?(Y/N): "
IF "%STR_INPUT%" == "y" (
ECHO "%STR_INPUT%:Windows Update Service を開始します。"
NET START WUAUSERV
) ELSE IF "%STR_INPUT%"=="Y" (
ECHO "%STR_INPUT%:Windows Update Service を開始します。"
NET START WUAUSERV
) ELSE (
ECHO "%STR_INPUT%:Windows Update Service は停止中です。"
)
GOTO STATUS:STATUS
SC QUERY WUAUSERV
PAUSE
SC QC WUAUSERV
PAUSE
(参考:WiFi接続の確認について参考にしたところ)
ワイヤレス ネットワーク プロファイルを管理する - Windows ヘルプ
http://windows.microsoft.com/ja-jp/windows-8/manage-wireless-network-profiles
コマンドの動き
WiFi接続確立時に、WiFi接続先SSIDと状態をチェックし、テザリング対象のSSID(SH-08E_AP または Xperia Z4 Tablet_565c)でなく、自宅SSIDに接続していれば Windows Update Service に接続し、以下の画面は表示されません。
テザリング対象のSSIDに接続していた場合、現在接続されているワイヤレスネットワークのSSIDが表示され、続いてUACの応答を求められ、管理者権限への昇格に応じるとWindows Update Serviceの状態表示に切り替わります。
<Windows Update Serviceが停止中の場合>
Windows Update Serviceは停止中(STOPPED)と表示されています。停止中なので開始しますか?の指示待ちとなります。
yを押すとWindows Update Serviceを開始します。
<Windows Update Serviceが実行中の場合>
Windows Update Serviceは実行中(RUNNING)と表示されています。実行中なので停止しますか?の指示待ちとなります。
テザリング対象のSSIDであれば自動でWindows Update Serviceを停止することも可能ですが、セキュリティに関することなのでユーザの指示を仰ぐようにしました。
yを押すとWindows Update Serviceを停止します。
経過観察
これまで書いたようなこと、つまり Windows Update Service を停止することで、Windows 10 Home でも Windows Update を自動適用させないことができるか?しばらく経過をみます。
こんちは。
返信削除Windows10 Homeだとテザリング時のwifiの接続先設定を
【従量課金接続として設定】するってやつだとダメなんでしょうか?
おはようございます。貴重なご指摘ありがとうございます。娘には様々な切り口から問題(算数)を解くように!キリッ とやってる私ですが情けない・・・
削除今安曇野のホテルにいるのですが、さっそく従量制課金接続をONにしてWindows 10端末から書いています。
以前いただいたアドバイスを参考にし、遊べるときは遊ぶようにしています。中学生になると今度は部活動も始まって忙しそうですが遊んでくれるのかなあ・・・