O NTFS não o impede, é apenas a API do Win32 que o faz. Como Alex observou em um comentário, se você usar \?\...
para ignorar a análise usual e fornecer o caminho bruto para a API do NT, poderá criar um diretório com um período posterior.
(Por que isso funciona? O artigo Namespaces de arquivo Win32 diz : "Para arquivo I / O, o prefixo" \? \ "Para uma seqüência de caminho informa as APIs do Windows para desabilitar toda a análise de seqüência de caracteres e enviar a seqüência de caracteres que segue diretamente para o sistema de arquivos. Por exemplo, se o sistema de arquivos suportar caminhos grandes e nomes de arquivos, você pode exceder os limites de MAX_PATH que são aplicados pelas APIs do Windows. ")
Quanto a por que o período final é retirado, não parece haver nenhuma documentação oficial, mas pode ter que fazer algo com compatibilidade com o antigo MS. Programas DOS ou Windows 3.11. No mundo do nome de arquivo 8.3, uma extensão vazia e nenhuma extensão era a mesma coisa - em ambos os casos, o nome do arquivo XYZ
teria sido armazenado como XYZ·····
e a extensão como ···
(pontos representando bytes nulos), então pode ter havido programas que dependiam desse fato. Quando o Windows 95 obteve suporte a nomes extensos, ele começou a armazenar o nome e a extensão como uma única string, fazendo com que xyz
e xyz.
se tornassem nomes de arquivo diferentes. Provavelmente teve que retirar o período final para evitar quebrar tais programas.