Windows Explorer - por que at-character @ às vezes não é permitido em nomes de arquivos?

6

Conheci muitos caracteres restritos e especiais em nomes de arquivos e pastas impossíveis de usar ou podem causar problemas mais tarde.

Por exemplo, colocar um ponto no final do nome fará com que ele desapareça.

O próprio Explorer tem mais restrições, por exemplo, um ponto no início do nome do arquivo é muito difícil de colocar.

OK, mas o que há de errado com arroba @ !?
Eu não vi nenhuma restrição em relação a isso, nem consegui encontrá-lo agora.

Veja:

1) Abra o Windows Explorer e crie um arquivo ou pasta com o nome 1,1
2) Pressione F2 e renomeie para @1,1
3) Veja? Novo nome foi cancelado.

Minha pergunta é: POR QUE?

Eu testei esse "recurso" no XP, Win7 e Win10.
O engraçado no WinXP é que renomear 0,0 para @0,0 realmente renomeia para @0 .

Parece que esse é o comportamento interno do Explorer, porque no console CMD não há problema em cd.>"@1,1"

    
por aleksusklim 04.11.2017 / 07:59

1 resposta

7

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).

    
por 04.11.2017 / 14:42