「Windows 10ミニTips」は各回の作成時点で最新のWindows 10環境を使用しています。
指定フォルダーなら利用可能だが……
WindowsはMS-DOS時代の慣例から、ファイル名の大文字・小文字を区別しない。MS-DOSは、UNIXなど先達のOSを参考に開発を重ね、そこからファイルシステムであるFATを受け継いだWindowsも同じだった。
厳密には、Windows NT系と呼ばれるOSは、当初からファイル名の大文字・小文字を区別するAPIを用意していたものの、互換性の関係から無効にしている。
この仕様が変更されることになったのは、WSLの存在だ。Windows 10上でLinuxディストリビューションの動作を実現するWSLと互換性を保つため、Windows 10 ビルド17107からファイル名の大文字・小文字を区別する機能が加わった。
つまり、Windows 10 バージョン1803(April 2018 Update)は大文字・小文字を区別したファイル名を扱うことが可能だ。「fsutil」コマンドの「queryCaseSensitiveInfo」を用いると、ファイル名の大文字・小文字の属性を判断し、「SetCaseSensitiveInfo」で指定したフォルダーの属性を切り替える。
上図のとおり、SetCaseSensitiveInfoは指定したフォルダーに対して、ファイル名の大文字・小文字を区別する属性を付与している。一見すると、この属性をシステム全体に展開したほうが有益に思えるだろう。
だが、本来はファイル名で大文字・小文字を考慮しないアプリを実行すると、正しく動作しない(かもしれない)互換性問題が発生してしまう。そのため、WSL上でソースコードを展開し、コマンドラインでビルドするような場面でもない限り、この機能を使う場面はない。
とはいえ、何らかのトラブルに見舞われ、ファイル名の大文字・小文字を区別する必要性が生じた場合、上図に示した操作で属性を無効にできることは覚えておくとよいだろう。
阿久津良和(Cactus)