* I found someone asking the same question as me in 2005 (!) [1]
* Per someone on Stack Overflow: "/ can be used as a path separator at the API level, but you aren't calling the API directly. You're using cmd.exe, and cmd.exe parses the / as a command line option" [2]
* Later in the same Stack Overflow discussion someone performs a series of tests on Vista, with some inconsistent results. [2]
* Here's a history by veteran Microsoft developer Larry Osterman, which takes us back to the developers of MS-DOS and also mentions other undocumented ways MS-DOS can/could be made Unix friendly. [3]
-----
[1] https://bytes.com/topic/python/answers/23123-when-did-window...
[2] https://stackoverflow.com/questions/10523708/why-does-the-cm...
[3] https://blogs.msdn.microsoft.com/larryosterman/2005/06/24/wh...
According to the history, DOS 2.0:
https://blogs.msdn.microsoft.com/larryosterman/2005/06/24/wh...
[begin quote] Here’s a little known secret about MS-DOS. The DOS developers weren’t particularly happy about this state of affairs – heck, they all used Xenix machines for email and stuff, so they were familiar with the nix command semantics. So they coded the OS to accept either “/” or “\” character as the path character (this continues today, btw – try typing “notepad c:/boot.ini” on an XP machine (if you’re an admin)). And they went one step further. They added an undocumented system call to change the switch character. And updated the utilities to respect this flag.
And then they went and finished out the scenario: They added a config.sys option, SWITCHAR= that would let you set the switch character to “-“.
Which flipped MS-DOS into a nix style system where command lines used “-switch”, and paths were / delimited. [end quote]
They can't retroactively change MAX_PATH because it's a constant that's compiled in every application that uses it. Well-written applications these days will just do the \\?\ thing and be done with it. The downside of that is that you can get paths Explorer doesn't like. And I'm guessing Explorer explicitly doesn't allow you to create paths longer than MAX_PATH to prevent people complaining about »I created a folder in Explorer and copied a file there, but now I cannot open it.«. Keep in mind that (usually) developers can be expected to find solutions, but making it easy to frustrate regular users (of which the OS has at least a few hundred million) is not the best strategy to keep them using the OS.
Of course, there are also heaps of software that cannot use above method to allow for longer paths because they don't use the Unicode APIs. Maybe because some developers think supporting Windows 98 is a good idea nowadays, or because they just don't know any better. And in that heap there's a lot of poorly-ported open-source software, too.
[½] https://msdn.microsoft.com/en-us/library/windows/desktop/aa3...
The directory structure made some sense, that is, it was sane and rational. But it should've been split across several network drives to keep things shallower given the limitation.
* Forward slashes in paths but only 260 characters as max path length
* Maximum total path length of 32,767 characters but not forward slashes as path separator
Pick your poison.
Guy1543, thanks, I did not know that. And I wish I had known it sooner. :-)
See: https://msdn.microsoft.com/en-us/library/windows/desktop/aa3...