非力なタブレットや、実験環境用のWindows 10マシンで、急に処理が重くなる原因は自動更新やデフラグなどの自動メンテナンスだ。
特に、外出時にこれをやられると、機器を投げ捨てたくなるくらい殺意を抱く。 ユーザが実行・停止を制御できない糞システムをどうして作るのだろう…
Windows Updateの手動化 (無効化)
「外部に接続しない」、「大型アップデートはクリーン インストール」と決めてしまえば、Windows Updateは重いだけで不必要。
■ Windows管理ツール の サービス で設定する項目
この設定は、最近(おそらくversion 1803以降)では自動的に “復元” されてしまうので、効き目がなくなってしまった。
なお、一部の情報では 「サービス」の設定で「Orchestrator Service の更新」を無効化すれば良いとされているが、通常起動状態では「自動起動(遅延)」の設定でグレーアウトしているので変更不可。
レジストリエディタで下記のハイブを開き、 Startの値が 2 となっているのを、 4 に変更すると「無効」となる。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsoSvc] "Start"=dword:00000004
これと同様、権限がなく変更できないサービスとして「Delivery Optimization (DoSvc)」があるが、こちらもレジストリエディタ(Startの値を3から4に変更して)で無効化出来る。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DoSvc] "Start"=dword:00000004
また、「Background Intelligent Transfer Service (BITS)」も自動(遅延開始)となっている設定を無効化するとよいとされる。
■ グループポリシー エディター で設定する項目
グループポリシー エディターで「Windows Updateの自動更新を構成する」を無効化
管理者権限でコマンドプロンプトを開き、gpedit.mscを起動する。 コンピュータの構成 > 管理用テンプレート > Windowsコンポーネント > Windows Update とたどって、「自動更新を構成する」を無効化。
Windos Homeにはグループポリシー エディターが存在しないので、代わりにレジストリ エディターで設定を行う。
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU] "NoAutoUpdate"=dword:00000001
■ Windows管理ツール の タスクスケジューラ で設定する項目
管理者権限でタスクスケジューラを開き、タスクスケジューラ ライブラリ > Microsoft > Windows > Windows Update とたどって、Scheduled Start と Scheduled Start を削除
(削除前にエクスポートした…) Scheduled Start.xmlをダウンロードする | sihpostreboot.xmlをダウンロードする
また、タスクスケジューラ ライブラリ > Microsoft > Windows > UpdateOrchestrator とたどって、設定されているタスク(Schedule Scan, Update Model Task, ...等)を全て削除。(ユーザ権限の問題で、一部のスケジュールは削除できなかった)
Backup Scan.xmlをダウンロードする | Maintenance Install.xmlをダウンロードする | Reboot_AC.xmlをダウンロードする | Reboot_Battery.xmlをダウンロードする | Schedule Scan.xmlをダウンロードする | Schedule Scan Static Task.xmlをダウンロードする | USO_UxBroker.xmlをダウンロードする | Universal Orchestrator Start.xmlをダウンロードする | UpdateModelTask.xmlをダウンロードする
※ 現状では、グループポリシー エディターの設定で無効化を行っていれば、タスクスケジューラの設定は削除しなくても問題ない(Windows Updateは起動しない)ようだ。
無理やり削除するには、レジストリエディタで下記のハイブを開き、該当タスクのキーを削除するとよい。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\UpdateOrchestrator]
Microsoftストアの自動更新の無効
Microsoftストアを開き、ハンバーガーメニュー(…)の中の「設定」で、全ての項目を無効化する。
自動メンテナンスの無効化
レジストリエディターを開き、次の値を新規作成する
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\Maintenance] "MaintenanceDisabled"=dword:00000001
システム パフォーマンス測定(WinSAT)の無効化
管理者権限でタスクスケジューラを開き、タスクスケジューラ ライブラリ > Microsoft > Windows > Maintenance とたどって、WinSATを無効化 (右クリックして無効化を選択)
(削除前にエクスポートした…) WinSAT.xmlをダウンロードする
バックグラウンド ストア アプリの無効化
設定 > プライバシー > バックグラウンド アプリ とたどって、全てのアプリを無効化する。
さらに、アプリのアクセス許可の項目も (それらのアプリを使わないのであれば) 全て無効化する。
IPv6無効化
コントロールパネル > ネットワークと共有センター > ネットワーク接続 とたどって、「IPv6のチェックボックス」を外す
さらに、Microsoft TechNet 『連載 IPv6 入門 – 第三回 IPv6 の無効化方法』に書かれている次の項目も無効化する。
・netsh interface ipv6 isatap set state disabled
・netsh interface ipv6 6to4 set state disabled
・netsh interface teredo set state disabled
Cortana無効化
管理者権限でコマンドプロンプトを開き、gpedit.mscを起動する。 コンピュータの構成 > 管理用テンプレート > Windowsコンポーネント > 検索 とたどって、Cortanaを許可するを無効化
その他サービスの無効化
使わない機能のサービスを停止する。
・Connected User Experiences and Telemetry 自動→無効
・ActiveX Installer (AxInstSV) 手動→無効
・BranchCache 手動→無効
・Certificate Propagation 手動→無効
・Distributed Link Tracking Client 自動→無効
・Distributed Transaction Coordinator 手動→無効
・Downloaded Maps Manager 手動→無効
・FAX 手動→無効
・Geolocation Service 手動→無効
・Microsoft iSCSI Initiator Service 手動→無効
・Optimize drives 手動→無効 (デフラグツールのスケジュールされた最適化のOFFでも反映される)
・Portable Device Enumerator Service 手動(遅延起動)→無効
・PNRP Machine Name Publication Service 手動→無効
・Remote Access Connection Manager 自動→無効
・Remote Registry →無効
・SSDP Discovery 手動→無効
・Smart Card 手動→無効
・SysMain (SuperFetch) →無効
・Touch Keyboard and Handwriting Panel Service 手動→無効
・Windows Error Reporting Service 手動→無効
・Windows Search →無効
・WMI Performance Adapter 手動→無効
・支払いおよび NFC/SE マネージャー 手動→無効
自動デフラグの無効化
Windows管理ツール > ドライブのデフラグと最適化 を実行し、スケジュールされた最適化を無効化する。
ストレージセンサーの無効化
一時ファイルを定期的に削除するストレージセンサーを無効化するには、設定 > システム > ストレージ を開いてストレージセンサーを無効化する
シャットダウン時のスピードアップ
レジストリエディターを開き、次の値を変更する
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
WaitToKillServiceTimeout 5000 (ミリ秒) → 1000 (ミリ秒)
HKEY_CURRENT_USER\Control Panel\Desktop
MenuShowDelay 400 (ミリ秒) → 50 (ミリ秒)
HungAppTimeout = STRING : 3000 (ミリ秒)
WaitToKillAppTimeout = STRING : 2000 (ミリ秒)