Categorias

Por que a Microsoft proíbe você de usar esses nomes desde 1974?

Faça esse experimento agora: abra o Bloco de Notas. Pode ser o Microsoft Word também. Ou o Adobe Photoshop, tanto faz. Agora tente criar um arquivo chamado prn.txt. Ou aux.doc. Pode ser também con.psd, vai depender do programa que você abriu.

Interessante, não?

Na verdade, se você estiver lendo isso em um desktop nem precisa abrir nada. Basta tentar salvar essa página como prn.html em qualquer diretório do seu Windows. Não importa o Windows. Pode ser Windows 10, 8, 7, Vista, XP, Deus-me-livre-e-guarde-Windows-Me. O resultado será o mesmo.

Se você foi preguiçoso demais para testar por seus próprios meios (ou se está lendo isso em um sistema que não tem o dedo de Bill Gates), a grande verdade é que é impossível. Em nenhuma versão do Windows lançada pelo Homem, você conseguirá criar ou salvar um arquivo com esses nomes.

Será feitiçaria? Bill Gates em pessoa está puxando os bits e os bytes no seu processador e impedindo isso? É cisma dele? É bug?

Esses e outros nomes são os chamados “nomes reservados do Windows”. Com raras exceções (nós chegamos lá), nenhum usuário pode criar ou salvar qualquer arquivo com qualquer extensão, se o nome do arquivo for CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 ou LPT9. E não adianta mudar as maiúsculas em minúsculas, porque o Windows não é sensível a esse tipo de variação e tanto faz como tanto fez se o arquivo se chama PRN.txt, prn.txt ou mesmo pRn.txt, o Windows bloqueará o nome.

De onde veio essa bobajada?

Reza a lenda que a Microsoft faz isso por uma questão de retrocompatibilidade, para manter seu suporte a programas legados de uma geração para outra do Windows. É uma afirmação que soa estranha para qualquer pessoa que tenha tentado rodar um jogo de DOS dos anos 90 em qualquer Windows nos últimos dez anos, mas é a versão que circula por aí e é menos vergonhosa do que pura e simples preguiça.

Inicialmente, essa proibição teria surgido em 1974, o que a torna mais velha do que muita gente que usa o Windows hoje. Em 1974, ainda existiam duas Alemanhas separadas, o Brasil era tricampeão do mundo em futebol, nenhum Star Wars havia sido lançado e o ápice dos jogos eletrônicos se chamava Pong:

Que gráficos!

Naquela época, Bill Gates ainda estava estudando a possibilidade de abrir uma empresa de computadores ao lado de Paul Allen, então você estava errado,  a culpa não é do Bill Gates.

Entretanto, em 1974 já existia o UNIX e no UNIX tudo era arquivo. Isso significava que até mesmo aquele periférico de 20 quilos acoplado ao que chamavam de computador nos anos 70 também era tratado como um arquivo. Uma impressora era um arquivo localizado em /dev/lp0, onde /dev/ era o diretório e lp0 era o “documento” impressora. O mesmo valia para o console, que ficava em /dev/tty.

Esse conceito foi empregado mais tarde no sistema operacional CP/M, desenvolvido para terminais tão burros que não tinham memória ou um disco rígido único. Ele empregava múltiplos discos separados, sem diretórios. Então, para cada dispositivo, em todos os discos, havia o tal “arquivo” o representando. Obviamente, uma gambiarra tão bizarra exigia decisões igualmente bizarras e, uma vez que o CP/M ignorava as extensões de arquivos criadas pelos programas, os nomes ficaram reservados.

O CP/M acabaria resolvendo esse conflito no futuro, mas os responsáveis pelo PC-DOS não receberam o memorando ou decidiram ignorá-lo e copiaram a implementação anterior por questões de “retrocompatibilidade”. Em outras palavras, para que programas desenvolvidos com aquela limitação em mente continuassem funcionando, foi decidido que a limitação seria preservada. A Microsoft pegou o PC-DOS para si, incluindo a limitação, então, surpresa!, você estava certo: Bill Gates, de alguma forma, tem culpa no cartório.

Em 1983, quando foi lançado o PC-DOS 2.0, foi adicionado suporte a diretório, mas a Microsoft, em nome da tal “retrocompatibilidade”, optou por manter os nomes reservados em todos os diretórios, ao invés de mover os dispositivos para um diretório próprio. Desta forma, um programa vetusto poderia continuar arquivos para a impressora em LPT1 a partir de qualquer pasta, sem precisar procurar por um /devices/lpt1 qualquer.

A Microsoft teve outra chance de acabar com essa palhaçada com o Windows NT, quando rompeu com o DOS como base do sistema operacional. Mas… adivinha? Em nome da retrocompatibilidade, manteve os nomes reservados para continuar oferecendo suporte a programas criados para o Windows 95. Daí pra frente foi uma bola de neve e dessa forma estamos em 2018 presos a uma gambiarra de 1974.

Nome reservado já morreu, quem manda no meu Windows sou eu

Se você precisa desesperadamente nomear um arquivo como con.txt ou prn.psd, existe um caminho por onde isso é possível. Tecnicamente falando, a Microsoft proíbe seu uso e reforça essa proibição através de APIs de sua interface gráfica. Entretanto, soluções de console, como cygwin, passam por cima do bloqueio, desde que seu sistema tenha suporte ao formato NTFS. Também é possível fazer isso a partir do Linux, em uma máquina com dual-boot. Uma vez criados, os arquivos até aparecem normalmente no Explorador de Arquivos.

Porém… caso você não tenha entendido nada do parágrafo anterior, não é uma boa ideia procurar esse tipo de alternativa. Uma vez que o bloqueio acontece por APIs, comportamentos erráticos são esperados na exibição dos arquivos da pasta onde os documentos foram gerados.

Em outras palavras, se você não sabe o que está fazendo, terá problemas para abrir, copiar, mover ou mesmo deletar esses arquivos e você irá xingar Bill Gates mesmo que ele não tenha (muita) culpa no caso.