Windows Server 2016 になってから UI も変更され、コントロールパネルとユニバーサルアプリの設定画面の 2 ラインで設定がどこにあるのかピンときませんが、従来の Windows Update の設定からは Windows Update の自動更新を無効化することができなくなってしまいました。
手動でのパッチ適用を行うような環境の場合など、自動更新を回避したいシーンがあると思いますので自動更新を停止する方法を試してみました。
Windows Update の自動更新を無効化する
Windows Server 2016 から 自動更新をオフにする設定が行えなくなってしまったものの、ポリシーやレジストリにて、自動更新の無効化を行うことができます。(Pro 以上であれば Windows 10 でも設定可能)
ドメイン環境の場合はドメインのグループ ポリシーを構成していると思いますが、ワークグループ環境やグループポリシーで構成していない場合はローカル ポリシーで構成します。
また、Windows Server OS 限定ですが、「sconfig」コマンドを使った方法もあり、一番お手軽な方法なのでこちらもご紹介します。
ローカル ポリシーでの設定方法
まず、ローカル グループ ポリシー エディター[gpedit.msc]を起動し、以下の通り展開していきます。
[コンピューターの構成] – [管理用テンプレート] – [Windows コンポーネント] – [Windows Update]
[Windows Update] まで展開すると、右側の一覧に [自動更新を構成する] の項目がありますのでクリックしてプロパティを開きます。
「自動更新を構成する」の画面にて、設定を”未構成”から”無効” に変更して適用します。
設定変更を行った後は再起動を行いましょう。
再起動後にサーバー マネージャーの Windows Update の項目が「更新プログラムを確認しない」となっていれば設定は反映されています。
これで更新プログラムの自動更新が行われなくなりますので、必要に応じて更新プログラムを手動で適用するようにしましょう。
レジストリでの設定方法
ワークグループ環境で複数台のマシンがあったため、一つずつローカル ポリシーを変更していくのが面倒だったのでレジストリを直接変更する方法を試してみました。
最初にローカル ポリシーにて設定を行ったマシンで確認したところ、レジストリキーは
「HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU」
「NoAutoUpdate : 1」
で作成されていたので、同様の値になるように構成を行います。
レジストリキーの確認
まずは、何も設定していないデフォルト状態のマシンへ以下のコマンドを実行して、「HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU」のレジストリ値を確認します。
コマンド例
(Get-Item -Path "Registry::HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU")
コマンド実行例
PS C:\Users\Administrator>(Get-Item -Path "Registry::HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU")
Hive: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate
Name Property
---- --------
AU AUOptions : 3
PS C:\Users\Administrator>
デフォルト状態ではこのようになっており、「AUOptions : 3」は、「自動的にダウンロードし、インストールを通知します。」の設定となります。
レジストリ設定の投入
ローカル ポリシーにて設定したマシンでは、「AUOptions」のキーはなく「NoAutoUpdate : 1」のみとなっていましたので、同じ形になるように「AUOptions」を削除して「NoAutoUpdate : 1」を追加しました。
コマンド例
Remove-ItemProperty "Registry::HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name AUOptions
Set-ItemProperty "Registry::HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name NoAutoUpdate -value 1
コマンド実行例
PS C:\Users\Administrator> Remove-ItemProperty "Registry::HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name AUOptions PS C:\Users\Administrator> PS C:\Users\Administrator> Set-ItemProperty "Registry::HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name NoAutoUpdate -value 1 PS C:\Users\Administrator>
Remove と Set コマンドの実行後は、再度 Get で確認します。
PS C:\Users\Administrator> (Get-Item -Path "Registry::HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU") Hive: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate Name Property ---- -------- AU NoAutoUpdate : 1 PS C:\Users\Administrator>
このようになっていれば、ローカル ポリシーで設定した場合と同じ状態になります。
設定完了後に再起動を行い、Windows Update の状態を確認してみましょう。
この設定を行っていても、ローカル ポリシーにて設定を行っていなければローカル ポリシー側では未構成と表示されますので、混乱を招かないためにもローカル ポリシーにて管理を行うのが良いかと思います。
※そもそも複数のマシンで自動更新の設定を行う場合は、ドメイン環境であればグループポリシーで実装することが望ましいです。
sconfig での設定方法
最後に「sconfig」コマンドから Windows Update の自動更新を無効化する方法になります。sconfig 自体は以前からある方法なので、Windows Server 2019 以前の サーバー OS でも利用可能です。
※Windows10 などのクライアント OS では利用することができません。
sconfigコマンドにて、簡単に Windows Update 設定を変更することができます。
コマンド例
sconfig
コマンド実行例
サーバー構成画面から「5) Windows Update の設定」の “5” を入力して実行すると、現在の設定と変更したい設定が表示されるので「手動更新(M)」の “M” を入力して実行します。
ポップアップにて、「Windows Update の設定:手動、更新は自動的に確認されません。」のメッセージが表示されます。
再度、最初のサーバー構成画面に戻りますので、「15) 終了してコマンド ラインに戻る」の “15” を入力して「sconfig」を終了させます。
ローカルポリシーやレジストリから設定するよりも早く、簡単な操作で設定を行えるので、とても便利ですね。