Why Win11 Keeps Old MS-DOS Filenames: Compatibility Explained

0
27

Even in the latest Windows 11 26H2 build, some core system files like kernel32.dll, user32.dll, and ntoskrnl.exe retain naming conventions harkening back to the MS-DOS era. These files adhere to the 8.3 naming format, a legacy Microsoft continues to support primarily for compatibility reasons.

The 8.3 Naming Convention Explained

The 8.3 format, originating from MS-DOS, restricts filenames to a maximum of eight characters before a period and three characters after it. Crucially, these filenames must use only ASCII characters, cannot contain spaces, and are limited to a single period. While newer Windows components have moved beyond this limitation, many of the oldest files residing in the System32 folder still strictly follow these archaic rules.

Another remnant of MS-DOS is its tendency to display filenames in uppercase. This historical behavior explains why Windows, by default, treats filenames as case-insensitive. Consequently, kernel32.dll and KERNEL32.DLL are recognized as the same file.

Origins of the 8.3 Limit

While the exact rationale for the 8-character and 3-character limits remains somewhat obscure, Microsoft veteran Raymond Chen attributes their origin to the CP/M operating system. However, even Chen admits he doesn’t know why CP/M specifically chose these numbers. It’s noted that CP/M’s directory format did include two reserved bytes, which theoretically could have allowed for longer filenames, extending up to a 10.3 format.

Decades of Compatibility Challenges

Chen suggests that Microsoft has maintained these naming conventions for decades because many older applications establish links to dynamic-link libraries (DLLs) using their filenames. If a filename were to change, these legacy programs would fail to locate and load the necessary DLLs, leading to widespread software failures.

The transition to long filenames wasn’t immediate. Even with the release of Windows 95, Microsoft did not mandate long filename support on system drives. This decision was partly influenced by enterprise environments using roaming profiles, where some servers might not have been equipped to handle longer file names. Long filenames only became a standard requirement by the time of Windows XP’s release.

Long Filenames and Their Own Baggage

Even after the widespread adoption of long filenames in the 21st century, compatibility issues persisted. To maintain backward compatibility, Windows introduced a mechanism to generate short, 8.3-style aliases for every long filename. This could lead to peculiar naming scenarios. For instance, if an installer attempted to copy a file named shellstyle.dll into a folder that already contained a file named shellstuff.dll, the new file might be assigned a name like SHELLS~2.DLL. This system, while functional, highlights the intricate and often complex layers of backward compatibility that modern operating systems must manage.

Source: https://www.ithome.com/1/014/601.htm

LEAVE A REPLY

Please enter your comment!
Please enter your name here