Перейти к содержимому
Статья

Windows 11 до сих пор использует имена файлов из MS-DOS. Почему их не меняют?

В Windows 11 сохранились системные файлы, названия которых подчиняются ограничениям операционных систем 1980-х годов. Например, kernel32.dll и user32.dll до сих пор используют формат 8.3. Microsoft давно умеет работать с длинными именами, но переименование старых библиотек может нарушить работу программ.

Александр Фомин
Windows 11 до сих пор использует имена файлов из MS-DOS. Почему их не меняют?

Автор: ITHome

Достаточно открыть папку System32 в Windows 11, чтобы обнаружить любопытную деталь. Рядом с современными компонентами системы находятся файлы kernel32.dll, user32.dll и ntoskrnl.exe. Их названия выглядят привычно, хотя составлены по правилам, существовавшим задолго до появления Windows.

Речь о формате 8.3, который использовался в MS-DOS. До точки разрешалось не более восьми символов, после нее оставалось три символа для расширения. Например, kernel32.dll полностью соответствует этому ограничению.

Сама MS-DOS унаследовала такой способ именования от CP/M, операционной системы для ранних персональных компьютеров. Инженер Microsoft Рэймонд Чен еще в 2009 году объяснял, что точная причина выбора восьми символов для имени и трех для расширения неизвестна. По его предположению, разработчики CP/M могли просто посчитать такую длину удобной.

Современная Windows в подобных ограничениях давно не нуждается. Файловая система NTFS поддерживает гораздо более длинные названия, а в самой Windows 11 встречаются системные компоненты вроде SecurityHealthService.exe.

Почему тогда Microsoft не переименует старые библиотеки?

Проблема в программах, которые обращаются к системным DLL по конкретному имени. Если приложение ожидает найти user32.dll, замена этого названия потребует изменения самого приложения или дополнительных механизмов совместимости.

Причем речь идет о программном обеспечении, создававшемся на протяжении нескольких десятилетий. Даже если современные приложения смогут работать с новыми именами, старые программы могут оказаться к этому не готовы.

Есть и другая особенность. Windows умеет создавать короткие псевдонимы для длинных названий файлов. Например, папка Program Files может иметь дополнительное имя PROGRA~1. Оно необходимо некоторым старым приложениям, которые обращаются к каталогам через привычные адреса.

Проверить наличие таких имен можно самостоятельно. Достаточно открыть командную строку и выполнить команду dir /x C:\. Она выведет содержимое корневого каталога вместе с короткими именами, если они существуют.

Правда, на современных томах NTFS создание подобных псевдонимов может быть отключено. Поэтому отсутствие PROGRA~1 не означает неисправность Windows.

Рэймонд Чен обсуждал причины сохранения старых системных имен еще в 2007 году. Причем он прямо уточнял, что предлагает возможные объяснения, а не излагает официальное решение Microsoft. Нового объявления о переименовании системных библиотек компания не делала.

Для обычного владельца Windows 11 эти названия практически ничего не меняют. Переименование kernel32.dll не ускорит компьютер и не добавит системе новых возможностей, зато потребует серьезной работы над совместимостью.

А вы когда-нибудь обращали внимание, сколько следов старых версий Windows сохранилось в современной системе?

4 показов