Почему NTFS чувствителен к регистру?

24

Я лично думал, что NTFS нечувствительна к регистру, так как вы можете набрать cmd, CMD, cMd или даже CmD и все равно получить командную строку. Тем не менее, почему во время CHKDSK x: /f /r, иногда он исправляет заглавные буквы в некоторых файлах? Если это не заботит дело, это не должно иметь значения, и CHKDSK не должен проверять, действительно ли это CMD или cmd. Я прав? Где это на самом деле имеет значение в файловой системе?

Канадский Люк ВОССТАНОВИТЬ МОНИКУ
источник
25
Обратите внимание, что «с учетом регистра» и «с учетом регистра» - это две разные вещи. NTFS сохраняет регистр, но не учитывает регистр в пространстве имен Win32, но может быть регистрозависимым в пространстве имен POSIX.
grawity

Ответы:

34

Чувствительность к регистру файловой системы - это отдельная проблема операционной системы. Последние выпуски Windows основаны на ядре NT, которое наследует многие свойства не-NT Windows 95 и даже MS-DOS. Наряду с ядром NT файловая система NTFS была разработана с учетом регистра символов - для POSIX-совместимости .

Хотя подсистема Win32 не поддерживает имена файлов, которые отличаются только чувствительностью к регистру, можно создавать эти файлы с помощью системных вызовов более низкого уровня.

Фрэнк
источник
1
Я не знаю простого способа создания таких файлов в Windows. Однако вызов API CreateFile () с битом FILE_FLAG_POSIX_SEMANTICS должен выполнять эту работу программно.
Фрэнк
2
@Luke: Win32 не поддерживает файлы, чувствительные к регистру. Вы должны будете делать вызовы API в подсистеме ОС. osronline.com/article.cfm?id=91
surfasb
2
@Luke: Одним из простых способов было бы смонтировать диск NTFS из системы Linux и создать нужные файлы там :)
Бегемот
1
Просто убедитесь, что у вас правильная версия Windows NT и установите утилиты Subsystem for UNIX Applications, люди.
JdeBP
1
@Luke: Как обычно, Википедия на помощь. :-)
afrazier
7

Это на самом деле не NTFS, о которой вы спрашиваете.

NTFS - это файловая система. Ваш вопрос действительно о чувствительности к регистру командной оболочки Windows. Они совершенно разные. Windows Explorer - это графическая командная оболочка. Вводя cmd(например, в Start | Run) командную оболочку Windows, чтобы выполнить команду cmd(которая сама по себе является другой командной оболочкой, но основанной на командной строке, а не графической).

Точно так же CHKDSK не проверяет, используете ли вы CMD или cmd. Все, что CHKDSK знает, это параметры, которые вы передаете ему, в данном случае это x :, / f и / r.

Что касается CHKDSK "фиксация капитализации", я не совсем уверен, что вы там имеете в виду.

squillman
источник
4
NTFS чувствительна к регистру. Согласно статье MS KB 100625: В NTFS вы можете создавать уникальные имена файлов, хранящиеся в одном каталоге, которые отличаются только регистром. Например, следующие имена файлов могут сосуществовать в одном каталоге на томе NTFS: CASE.TXT case.txt case.TXT Однако, если вы попытаетесь открыть один из этих файлов в приложении Win32, таком как Блокнот, у вас будет только доступ к одному из файлов, независимо от регистра имени файла, которое вы вводите в диалоговом окне «Открыть файл».
Фрэнк
Это правда, спасибо за разъяснение этого. Я исключил это из своего ответа, поскольку в любом случае это не совсем то, о чем здесь идет речь.
squillman
> Однако, если вы попытаетесь открыть один из этих файлов в приложении Win32, например в «Блокноте», у вас будет доступ только к одному из файлов, независимо от того, в каком случае указано имя файла, которое вы вводите в диалоговом окне «Открыть файл». Какой?
Synetech
4
@Synetech: Первый, возможно? Зависит от порядка файлов в каталоге и, возможно, фазы луны.
Гравитация
5

Я подозреваю, что утверждение автора вопроса о том, что chkdsk.exe "исправляет использование заглавных букв в некоторых файлах", фактически вызвано сообщением от CHKDSK, которое появляется при некоторых обстоятельствах:

исправление ошибок в файле верхнего регистра

В основном это происходит из-за версии chkdsk.exe для Windows XP, работающей на томе NTFS, отформатированном в более поздней версии Windows, как описано в сообщении об ошибке при запуске Chkdsk.exe на базе Windows XP или Windows Компьютер под управлением Server 2003: «Исправление ошибок в файле верхнего регистра» . В результате это не является ошибкой и не имеет отношения к регистру.

kreemoweet
источник