Windows10でフォルダーの大文字と小文字を区別するモードを有効にする
ご存知かもしれませんが、WindowsファイルシステムであるNTFSは、ファイル名とフォルダ名で大文字と小文字を区別しないものとして扱います。 たとえば、OSとアプリの場合、MyFile.txtとmyfile.txtは同じファイルです。 ただし、Linuxでは状況が異なります。 このOSの場合、これらは2つの異なるファイルです。 この動作の違いにより、WSLユーザーに問題が発生する可能性があります。 それらを解決するために、Windows 10には、フォルダーの大文字と小文字を区別するモードを有効にする機能が含まれています。
使用したことがある場合 Linux用のWindowsサブシステム、Windowsファイルシステム(/ mnt / c、/ mnt / dなどの下にマウントされている)を大文字と小文字を区別して扱うことができることをおそらくご存知でしょう。 これは、特に、名前が大文字と小文字だけが異なるファイル(foo.txtやFOO.TXTなど)を作成できることを意味します。
ただし、これらのファイルをWindowsで使用することは実際には不可能でした。 Windowsアプリケーションはファイルシステムを大文字と小文字を区別しないものとして扱うため、大文字と小文字のみが異なる名前のファイルを区別することはできません。 ファイルエクスプローラーには両方のファイルが表示されますが、どちらをクリックしたかに関係なく、1つだけが開かれます。
Windows Insider Build 17093以降、Windowsで大文字と小文字を区別するファイルを処理する新しい方法があります。ディレクトリごとの大文字と小文字の区別です。 この機能は、大文字と小文字を区別するファイルを使用する際の相互運用性を向上させるために追加されました。 また、通常のWindowsアプリケーションで使用できます。 Windows 10ビルド17110以降、この動作はデフォルトです。
詳細
Windowsでの大文字と小文字の区別
Windows NTファミリのオペレーティングシステム(Windows 10を含む)には、常に大文字と小文字を区別するファイルシステム操作を実行する機能がありました。 アプリケーションは合格することができます FILE_FLAG_POSIX_SEMANTICS
にフラグを立てる CreateFile
FILE_FLAG_POSIX_SEMANTICS
フラグが指定されています。 Windows XP以降、これがデフォルトになっています。
Linux用のWindowsサブシステムは、それ自体がそのレジストリキーをバイパスする別のメカニズムを使用して、大文字と小文字を区別するファイルシステム操作を実行できるようにします。 これにより、WSLで実行されているLinuxアプリケーションは、グローバルレジストリキーが設定されている場合でも、実際のLinuxで使用できるのと同じように、大文字と小文字だけが異なるファイル名を使用できます。
残念ながら、これにより、Windowsアプリケーションからアクセスできないファイルが残ります。 グローバルレジストリキーを変更することはできますが、それでも、を使用するアプリケーションでのみ機能します。 FILE_FLAG_POSIX_SEMANTICS
、これにより、すべてのドライブ上のすべてのファイルの動作が変更されます。これは、意図されていない可能性があり、一部のアプリケーションを破壊する可能性があります。
ディレクトリごとの大文字と小文字の区別
この問題を解決するために、Microsoftはディレクトリに適用できる新しい大文字と小文字を区別するフラグを追加しました。 このフラグが設定されているディレクトリの場合、そのディレクトリ内のファイルに対するすべての操作では、大文字と小文字が区別されます。 FILE_FLAG_POSIX_SEMANTICS
指定されました。 これは、大文字と小文字が区別されるとマークされたディレクトリに大文字と小文字のみが異なる2つのファイルがある場合、すべてのアプリケーションがそれらにアクセスできることを意味します。
フォルダの大文字と小文字を区別するモードを有効にする
この機能を有効または無効にするには、組み込みのfsutil.exeアプリを使用する必要があります。
フォルダの大文字と小文字を区別するモードを有効にするには、 以下をせよ。
- 開ける 昇格したコマンドプロンプト.
- 次のコマンドを入力します。
fsutil.exeファイルsetCaseSensitiveInfo「フォルダへのフルパス」を有効にする
パス部分をPCに一致する正しいパスに置き換えます。
例えば、fsutil.exeファイルsetCaseSensitiveInfo "C:\ data \ Winaero \ Linux" enable
- これで完了です。
これで、同じ名前で大文字と小文字を区別するだけで2つのファイルを作成できます。 Windows 10は、この特定のフォルダーでそれらを正しく処理します。
フォルダの機能ステータスを確認するには、コマンドを実行します
fsutil.exeファイルqueryCaseSensitiveInfo「フォルダへのフルパス」
例えば、
fsutil.exeファイルqueryCaseSensitiveInfo "C:\ data \ Winaero \ Linux"
次のようなものが表示されます。
ついに、 フォルダの大文字と小文字を区別するモードを無効にするには、管理者として開いたコマンドプロンプトで次のコマンドを実行します。
fsutil.exeファイルsetCaseSensitiveInfo "C:\ data \ Winaero \ Linux" disable
正しいフォルダパスを使用すれば完了です。
ノート: 空でないフォルダのCaseSensitiveInfo属性を無効にすることはサポートされていません。 フォルダを無効にする前に、フォルダからすべてのファイルを削除する必要があります。
それでおしまい。