こんにちは、阿久津です。Windows XP時代の有名なレジストリチューニングとして、NTFSのアクセス日時の更新を無効にするDWORD値「NtfsDisableLastAccessUpdate」、8.3形式のショートファイルネームを作成しないDWORD値「NtfsDisable8dot3NameCreation」があります。いずれもコンピュータのパフォーマンスが低い時代に、NTFSが持つ各機能を無効にし、Windows XPのパフォーマンスに大きく影響を及ぼすファイル入出力の効率化を行なうというものでした。

なぜ、Windows 7全盛の時代にWindows XP時代の話が出るのかと言えば、昨日頂いた読者メールがことの始まり。同メールには前述した各エントリに関する質問が書かれており、「Windows 7でも有効か?」というものでした。答えは簡単。前述した各エントリは、HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystemキーで管理されますが、Windows 7でも同キーおよびエントリは存在します(図01)。

図01: レジストリエディタで、HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystemキーを開きますと、DWORD値「NtfsDisableLastAccessUpdate」および「NtfsDisable8dot3NameCreation」の存在を確認できます

例えば、DWORD値「NtfsDisable8dot3NameCreation」の場合、NTFSドライバである「ntfs.sys」はもちろん、ファイル操作を行なう「fsutil.exe」も同エントリを参照し、前述したキーのエントリを参照しているため、Windows 7でも有効なレジストリチューニングであると言い切れるでしょう。

同時に注目したいのが、各DWORD値のデータ値。まず、Windows 7におけるDWORD値「NtfsDisableLastAccessUpdate」の初期データ値は「1」と、アクセス日時の更新は初期状態で無効になっています。試しに同DWORD値のデータ値を「0」に変更しますと、アクセス日時も正しく更新されました。つまり、我々がWindows XP時代に施したレジストリチューニングの一部は、Windows 7の初期状態で有効になっているのです(図02~03)。

図02: DWORD値「NtfsDisableLastAccessUpdate」のデータ値が「1」(初期状態)の場合、「アクセス日時」は更新されません

図03: DWORD値「NtfsDisableLastAccessUpdate」のデータ値を「0」に変更しますと、「アクセス日時」が更新されるようになります

その一方で、DWORD値「NtfsDisable8dot3NameCreation」の初期データ値は「2」。Windows XP時代は「0」もしくは「1」のいずれかを設定しなければならないため、怪訝(けげん)に思う読者も少なくないでしょう。同DWORD値のデータ値が拡充されたのはWindows 7以降で、Windows Vistaの同DWORD値を調べてみると初期値は「0」となっています(図04~05)。

図04: Windows VistaのHKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ FileSystemキーにあるDWORD値「NtfsDisable8dot3NameCreation」は、データ値が「0」となっています

図05: こちらはWindows 7の同キーにあるDWORD値「NtfsDisable8dot3NameCreation」。初期データ値は「2」でした

それでは、Windows 7上の「NtfsDisable8dot3NameCreation」はどのように変化しているのか解説しましょう。従来は「0」「1」というBoolean(ブーリアン)型で、ショートファイルネームの作成有無を制御していました。すべてのボリュームに対してショートファイルネームの作成を有効にする場合は「0」。すべてのボリュームに対してショートファイルネームの作成を無効にする場合は「1」と、ここまでは一緒。

Windows 7では、ショートファイルネームの作成をボリューム単位で制御する場合は「2」。ホストドライブ(システムボリューム)を除くすべてのボリュームに対してショートファイルネームの作成を無効にする場合は「3」と設定可能な数値が増えました。なお、「2」を設定した場合、それぞれのボリュームにあるフラグが参照し、ショートファイルネームの作成有無を判断しています。

同フラグを制御するのが、「fsutil」コマンド。サブコマンドである「8dot3name」を使用することで、ショートファイルネームに関するフラグの有無を制御できます。具体的には「fsutil 8dot3name set 2」と実行して、DWORD値「NtfsDisable8dot3NameCreation」のデータ値を変更し、「fsutil 8dot3name set D: 0」と実行すれば、Dドライブのショートファイルネーム作成フラグが有効になります。なお、無効にする場合は末尾の数字を「1」に置き換えて実行しましょう(図06~08)。

図06: <スタート>ボタンをクリックし、クイック検索に「cmd」と入力して同コマンドが表示されたら、そのままクリックします。ユーザーアカウント制御が有効な場合、同コマンドを右クリックし、メニューから<管理者として実行>をクリックしてください

図07: 「fsutil 8dot3name set 2」と入力し、[Enter]キーを押せば、ショートファイルネームの作成有無をボリューム単位で設定できます

図08: 「fsutil 8dot3name set d: 0」入力し、[Enter]キーを押すことで、Dドライブのみショートファイルネームの作成が有効になります

このように、Windows XP時代に流行ったレジストリチューニングでも、使用できるチューニングと使用できないチューニング、そして使用方法が変わったチューニングがあります。大半はWindows 7で使用できますが、OSの仕様変更により機能の拡充や設定しても無意味なチューニングも存在しますので注意してください。

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

阿久津良和(Cactus)