こんにちは、阿久津です。今夏リリース予定のWindows 10 バージョン1607から、古い「ファイルシステムフィルタードライバー」の登録を抑止する機能が加わる予定です。これまでWindowsは、ファイルの抽出概念をサポートする「ファイルシステムドライバー」と、ファイルシステムへのリクエストをフィルタリングする「ファイルシステムフィルタードライバー」を利用してきました。

ファイルシステムフィルタードライバーの実装方法には、レガシーファイルシステムドライバーとミニフィルタードライバーという2種類が存在します。レガシーファイルシステムドライバーは、ファイルシステムとのインターフェースをすべて自分で管理しなければなりません。細かい調整が可能な分、問題が発生しやすいため、Microsoftは以前からミニフィルタードライバーを推奨しています。

MicrosoftはWindows 10のさらなる安定性向上を目指すため、レガシーファイルシステムドライバーをブロックすることを決定したのでしょう。この仕様はWindows 10 Anniversary SDK Preview Build 14295から実装しますが、今回はWindows Insider Program参加者向けに、レガシーファイルシステムドライバーをブロックするチューニングをお送りします。

1. 管理者権限でレジストリエディターを起動します。
2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\I/O Systemキーを開きます。
3. DWORD値「IoBlockLegacyFsFilters」を作成し、データを「1」に変更します。
4. レジストリエディターを終了します。
5. PCを再起動します。

これで操作が完了しました(図01~07)。

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

図02 レジストリエディターが起動したら、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\I/O Systemキーを開きます

図03 右ペインの何もないところを右クリックし、<新規>→<DWORD値>と順にクリックします

図04 値名を「新しい値 #1」から「IoBlockLegacyFsFilters」に変更します

図05 DWORD値「IoBlockLegacyFsFilters」をダブルクリックで開き、データを「1」に変更して<OK>ボタンをクリックします

図06 レジストリエディターを終了して、PCを再起動します

図07 PCを再起動します

早速結果を確認してみましょう。管理者権限でコマンドプロンプトを起動し、「fltmc filters」とコマンドを実行してください。fltmc.exeはフィルタードライバーを制御するコマンドですが、オプション「filters」を使うことでシステムに登録されているフィルターの一覧が表示されます(図08~09)。

図08 [Win]+[X]キー → [A]キーと順に押すか、スタートメニューを右クリック→<コマンドプロンプト(管理者)>の順にクリックします

図09 コマンドプロンプトが起動したら、「fltmc filters」と入力して[Enter]キーを押します。「フレーム」の部分に「レガシー」と表示されなければOKです

残念ながら手元に古いPCが存在しないためご覧頂けませんが、レガシーファイルシステムフィルタードライバーが登録されていると「フレーム」の部分に「レガシー」と表示されますので、チューニング結果の参考にしてください。また、本チューニング後にレガシーファイルシステムフィルタードライバーの登録を試みますと、システムイベントにID 1205でブロックした旨を示すログが残ります。

明確なメリットがあるチューニングではありませんが、安定性向上を目指す方はWindows 10 バージョン1607のリリース後にお試しください。なお、本チューニングを破棄する場合は、DWORD値「IoBlockLegacyFsFilters」のデータを「0」に変更するか、値自体を削除します。

それでは、また次号でお目にかかりましょう。

阿久津良和(Cactus)