こんにちは、阿久津です。Windows OSには、不意のシャットダウンなどによるボリュームの整合性に異常が発生しますと、自動的にチェックディスクを実行し、ボリュームの検査を実行するロジックが備わっています。筆者が確認した限りでは、現在のWindows 7で使用されるロジックを初搭載したのは、Windows NTの時代。ちょうどNTFSが初実装されたのも同OSでした。

次バージョンにあたるWindows 2000では、コマンドラインから操作するchkdsk.exeや、NTFSボリュームに対する操作を行なうchkntfs.exe、Windows OS起動時に異常を検出すると自動実行するautochk.exeといったコマンドの仕様変更が行なわれ、安全性を高めるためのロジックを実装しています(図01~02)。

図01: Windows NT 4.0で実行されたAutochk.exe。1996年にリリースされたため英語モードのテキストが使われていました

図02: こちらはWindows 2000 ProfessionalのAutochk.exe。同じく英語モードのテキストですが、OSロゴが表示されています

それではロジックを簡単に説明しましょう。ボリュームの整合性に異常が発生しますと、ファイルシステムのダーティビットがセットされ、同ビットを検出することでOS起動時のAutochk.exeを実行するという仕組み。NTFSボリュームをUbuntuなどのLinuxディストリビューションでマウントする際のエラーも、このダーティビットが原因です。同情報を確認するにはfsutil.exeを使用しましょう(図03)。

図03: コマンドプロンプトから「fsutil dirty query c:」とドライブ文字を添えて実行すれば、同ボリュームのダーティビット状態を確認できます

これらのロジックに対する設定はntfschk.exeを使用し、「chkntfs /x d:」と実行すれば、Dドライブに対するAutochk.exeの検索が行なわれなくなりますが、安全性が著しく落ちるため、実行はお勧めできません。ちなみに「chkdsk /c d:」と実行することで再チェックされるようになり、「chkdsk /d」と実行すれば初期状態(すべてのボリュームをチェック対象にする)となります。

各設定情報はそれぞれのボリュームに直接登録されますが、その実行はHKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Managerキーの複数行文字列値「BootExecute」にコマンド登録され、Windows OS起動時に実行されるという仕組みです(図04~05)。

図04: コマンドプロンプトから「chkntfs /x d:」とドライブ文字を添えて実行すれば、同ボリュームに対する整合性の確認が行なわれなくなります

図05: この設定はHKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Managerキーの複数行文字列値「BootExecute」に登録し、Windows OS起動時に実行されます

この複数行文字列値「BootExecute」の内容が実行される場合、Windows OS起動後、10秒のカウントダウンを経てautochk.exeによるボリュームチェックが行なわれますが、急いでいる時はカウントダウン自体が煩雑に感じますし、その一方で安全性を優先したい場合は誤ってキーを押してしまい、autochk.exeの実行をキャンセルしてしまうなど、カウントダウン自体不要な存在になりかねません。

そこで今週は、起動時に実行されるチェックディスクのカウントダウンタイムを調整し、autochk.exeを正しく実行させるレジストリチューニングをお送りします。

1.[Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力してから<OK>ボタンをクリックします。
2.レジストリエディタが起動したら、HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Managerまでキーをたどって開きます。
3.右ペインの何もないところを右クリックし、メニューから<新規>→<DWORD値>と選択して、「AutoChkTimeOut」に名前を変更します。
4.ステップ03で作成したDWORD値「AutoChkTimeOut」をダブルクリックし、<10進数>をクリックしてから、値のデータにカウントダウンの秒数(ここでは「3」)を入力して<OK>ボタンをクリックします。
5.[F5]キーを押して変更内容をシステムに反映させてから、レジストリエディタを終了させます

これでチューニング終了です(図06~10)。

図06: [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「regedit」と入力して<OK>ボタンをクリックします

図07: レジストリエディタが起動したら、HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Managerまでキーをたどって開きます

図08: 右ペインの何もないところ右クリックし、メニューから<新規>→<DWORD値>と選択し、値名を「新しい値 #1」から「AutoChkTimeOut」に変更します

図09: DWORD値「AutoChkTimeOut」をダブルクリックし、<10進数>をクリックしてから値のデータにカウントダウンの秒数(ここでは「3」)を入力して<OK>ボタンをクリックします

図10: 設定を終えたら[F5]キーを押して変更内容をシステムに反映させてから、<×>ボタンをクリックしてレジストリエディタを終了させます

それでは結果を確認してみましょう。コマンドプロンプトからホストドライブを対象にチェックディスクを実行し、スケジュール登録を行なってください。この状態でコンピュータを再起動しますと、autochk.exeのカウントダウン秒数が3秒に変更されました。なお、数値は1(秒)から259200(7.5日)で設定可能です。初期状態に戻す場合はDWORD値「AutoChkTimeOut」を削除してください(図11~13)。

図11: [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「cmd」と入力して<OK>ボタンをクリックします

図12: コマンドプロンプトが起動したら、「chkdsk /f c:」と入力して[Enter]キーを押してください。スケジュールの確認をうながされますので、[Y]キーを押します。続いてプロンプトに「shutdown -r -t 0」と入力して[Enter]キーを押し、コンピュータを再起動させましょう

図13: これでautochk.exeの実行カウントダウンが10秒から3秒に変更されました

なお、本操作はレジストリだけではなく、前述のchkntfs.exeでも設定可能です。「chkntfs /t:30」と実行することでカウントダウンタイムを30秒に変更できますが、reg.exeやレジストリファイルなどを用いた方がスムーズに行なえますので、コンピュータの再セットアップ時に行なう一括設定などにお役立てください。

それでは、また次号でお会いしましょう。

阿久津良和(Cactus)