web-dev-qa-db-ja.com

Windows 7で大文字と小文字を区別するファイルシステムを使用して仮想ディスクを作成するにはどうすればよいですか?

どのファイルシステムが正確に使用されるかは関係ありません。大文字と小文字を区別して機能するには、ファイルパスが必要です。

大文字と小文字の区別がオンになっているLinuxボックスでのsamba共有と同様の動作かもしれません。ディスクをローカルに保存する必要があることを除けば、これは完璧です。

そのためのドライバー/ツールはありますか?

私はすでにこの目的のために機能しなかったWindows用のいくつかのext2ドライバーを試しました:(( http://www.fs-driver.org/ and http:// www.fs-driver.org/

6
Ivarpoiss

簡単な答えはノーです。長い答えは...

NTFSは大文字と小文字を区別する方法でファイル名を格納し(NTFSはREADME.txtとreadme.txtを同じディレクトリに置くことができます)、WindowsファイルマネージャでさえNtOpenFile/NtCreateFilesyscallを介してファイル名に対する大文字と小文字を区別する要求を内部的に管理できます。

残念ながら、Win32関数CreateFile(fopenを含むすべての場所で使用)は、OBJ_CASE_INSENSITIVEフラグを使用して内部的にNtCreateFileを呼び出します。これは、CreateFileを使用するすべてのアプリケーションが大文字と小文字を区別せずにファイルシステムを認識することを意味します。実際には、これは、ファイルシステムが実際に大文字と小文字を区別するかどうかに関係なく、すべてのアプリケーションが大文字と小文字を区別しない方法でファイルシステムを認識することを意味します。

大文字と小文字を区別するように実際に強制する唯一の方法は、着信syscall要求からOBJ_CASE_INSENSITIVEフラグを削除するフィルタードライバーを作成することです。これにより、NTFS、EXT2、またはデフォルトで動作する必要のある内部ファイルシステムが許可されます。 、大文字と小文字を区別する方法。

4
SecurityMatt

Windowsの内部からはこれが可能ですが、Cを記述できるようにする必要があります。

NTFSは、実際には名前を大文字と小文字を区別して格納します(POSIXサブシステムをサポートするため)。ただし、NTFSは実際には大文字と小文字を区別する関数自体をサポートしていません。 NTはもともとUNIXの直接の競合相手として書かれたことを考えると、これは当然のことです。

http://support.Microsoft.com/kb/100108

http://blogs.msdn.com/b/sfu/

http://www.netbsd.org/docs/pkgsrc/platforms.html#interix

1
surfasb

唯一の方法は、仮想化されたLinuxをインストールし、VMのドライブをWindowsと共有することです。

私は同じ解決策をインターネットで探していました。主に、大文字と小文字が異なるだけのファイルを持つLinuxシステムからGITリポジトリをチェックアウトするためです(ファイルが存在する理由を説明しないでください。私の制御が及ばないのです)。しかし、独自のサブシステムを作成したり、Interix(現在はUnixサービス)サブシステムに深く統合したりする以外に、これを行う比較的簡単な方法はないようです。

0
adib