Winowsの起動に時間がかかるとイライラする人は多いだろうが、シャットダウンに要する時間も見過ごせない。オフィスでは、終了ボタンを押したらすぐに離席したいところだが、セキュリティ上、電源オフになったことを見届けるべきだろう。

MakeTechEasierが「How to Speed Up Shutdown Process in Windows」という記事で、シャットダウンプロセスを高速化するという軽視されがちなテーマを取り上げている。

シャットダウンのプロセスでは、Windowsが動作しているすべてのプログラムのセッションが終了するのを待ち、応答のないものは強制的に終了するための処理を行う(ユーザーに「…は変更されています。保存しますか?」といったメッセージで確認をしたり、「このプログラムは応答していません」として「すぐに終了」か「キャンセル」を選択するように促したりするのはそのためだ)。

記事によると、「Windows 7」と「Windows 8」では、シャットダウンに要する時間が短くなっているという。それでも遅いと感じる場合は、以下の方法を試してみてはいかがだろうか?

今回紹介する方法では、Windows レジストリに変更を加える。Windows レジストリはデバイス、インストールされているプログラムと設定、ユーザーアカウントのプロファイルなどの重要な情報が入ったデータベースなので、変更を加える前にバックアップをとっておくように。

まずは、Windows レジストリを編集できるレジストリエディターにアクセスしよう。「Windows」キーと「R」キーを押して「ファイル名を指定して実行」を開く。そこに「regedit」と入力すればレジストリエディターが開く。

レジストリエディターが開いたら、左のツリー構造をたどってHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Controlへ移動し、右ペインで「WaitToKillServiceTimeout」を探そう。これはシャットダウン時にサービスの終了を待つタイムアウトを設定する項目だ。ここに、5000と入力されていれば、Windowsは5秒(5000ミリ秒)待つように設定されていることになる。

この値を編集するには、WaitToKillServiceTimeoutをダブルクリックして編集ウィンドウを開く。そこにミリ秒で値を入れる。2秒(2000ミリ秒)なら「2000」と入力して「OK」を押す。

WaitToKillServiceTimeoutの値を設定する画面

マイクロソフトによると、Windows Server 2008 R2とWindows 7では、標準でWaitToKillServiceTimeoutが機能しないので、修正プログラムを適用する必要があるとのことだ。該当するバージョンを利用している場合は、修正プログラムを実行されたい。

2016年11月追記

上記の該当するバージョンとは、 Winsrv.dll モジュールのバージョンが、Windows 7(x86版)の場合は6.1.7600.21011と6.1.7601.21773、Windows Server 2008 R2/Windows 7(x64版)の場合は6.1.7600.21011と6.1.7601.21773よりも古い場合を指します。

次に、アプリケーションの終了に対するタイムアウト設定を短くしよう。最初に、アプリケーションの自動終了を設定するため、HKEY_CURRENT_USER\Control Panel\DesktopでAutoEndTasksを1に設定する。

そして、レジストリエディターの左のツリーから、HKEY_CURRENT_USER\Control Panel\Desktopの右ペインにある「WaitToKillAppTimeout」を探して、応答がないアプリケーションを強制終了するメッセージが表示される時間を設定する。先ほどと同じようにダブルクリックして編集ウィンドウを開き、「2000」(2000ミリ秒=2秒)と入力して「OK」を押す。

最後に、同じくHKEY_CURRENT_USER\Control Panel\Desktopから、「HungAppTimeout」を変更する。HungAppTimeoutは「このプログラムは応答がありません」というメッセージが表示されるまでの時間を設定するものだ。これを「2000」(2000ミリ秒=2秒)と入力して「OK」を押す。

今回、3つの値をすべて2秒(「2000」)と入力したが、記事によると2秒を下回る値はWindowsに悪影響を与える可能性が高いため、避けるようにとのことだ。

なお、今回紹介したWindows レジストリの文字列値が、Windowsのバージョンによっては存在しないことがある。その場合は、値を作成したい項目の上で右クリックをすると、「新規」のメニューが表示されるので、作成したい値を選べばよい。

Windows レジストリで値を新規で作成する画面

これで、終了プロセスが短縮されたことだろう。しつこいようだが、Windows レジストリは重要なファイルなので、くれぐれもバックアップをお忘れなく!