Eu não sei por que o Explorer proíbe tais renomeações, mas é provável que isso aconteça com um recurso de localização.
Várias partes do Explorer usam a sintaxe @<DllName>,<ResourceID>
para carregar dinamicamente o texto localizado - consulte redirecionamento de cadeia de registro . (Observe que o ID do recurso é sempre um número decimal, geralmente negativo.)
-
Por exemplo, a descrição dos atalhos .lnk no Registro é
@shell32.dll,-4153
, que significa "carregar cadeia com ID -4153 do arquivo shell32.dll". Como os arquivos DLL podem ter uma tabela de recursos separada para cada idioma suportado, a descrição resultante será traduzida para qualquer idioma de exibição do Windows definido. -
Da mesma forma, sua área de trabalho; Documentos; As fotos; ... os diretórios possuem um arquivo
desktop.ini
oculto contendo:[.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 IconResource=%SystemRoot%\system32\imageres.dll,-183
Quando o Explorer visualizar esse arquivo, ele não mostrará apenas a pasta como "Desktop" - ele mostrará o nome traduzido.
Simplesmente usar a sintaxe de redirecionamento em um nome de arquivo / diretório real não fará nada, mas meu palpite é que foi proibido evitar vários bugs no caso de um programa misturar os nomes "real" e "display" em alguns maneira. (Por exemplo, se você nomear um diretório @shell32.dll,-21769
, é possível que um programa com bugs continue tentando acessar Desktop
. Isso pode até criar problemas de segurança.)
Assim, seria semelhante a vários outros nomes que o Windows permite, mas o Explorer não (por exemplo, .foo
, que é um "arquivo oculto" comum para o Unixen, mas pode ser confundido com um arquivo sem nome (somente extensão) Programas do Windows).