Parando nomes de arquivos muito longos no Windows Server 2003

6

Estamos encontrando um problema com nomes de arquivos longos, geralmente em "Meus documentos" ou em unidades compartilhadas.

Basicamente, parece que um documento pode ser escrito com um nome de arquivo muito longo e salvo em "Meus Documentos". Que está bem nesse computador, o documento é "Meus documentos \ verlylongfilename".

O problema surge quando você chega ao servidor em que os arquivos estão armazenados e o caminho muda para "e: \ Todos os Usuários \ Pastas Staff \ JSmith \ verylongfilename", o que empurra a contagem de caracteres sobre o que o explorador pode fazer com .

A única maneira que eu encontrei para "remover" ou renomear esses arquivos é mapear até a pasta, mas isso é completamente inútil se você quiser mover um grupo de pastas.

Isso é apenas uma restrição com a qual temos que conviver e corrigir, ou há outra maneira de acessar esses arquivos ou até mesmo para impedir que os usuários originais salvem nomes de arquivos com mais de 30 caracteres? Uma configuração de GPO, talvez?

    
por Tubs 09.06.2009 / 13:16

3 respostas

4

O sistema de arquivos NTFS oferece suporte a caminhos de até 32767 caracteres Unicode com cada componente de caminho (diretório ou nome de arquivo) com até 255 caracteres. Mas o Windows Explorer e a maioria dos outros aplicativos Win32 suportam apenas 255 caracteres no caminho.

Você pode usar robocopy , uma ferramenta gratuita da Microsoft que oferece suporte total a nomes de caminho longos (com mais de 256 caracteres). Aqui está documentado como usar o robocopy listando todos os switches e opções.

Aqui está um trecho do artigo no MSDN que explica por que muitos programas limitam caminhos a 255 caracteres:

In the Windows API (with some exceptions discussed in the following paragraphs), the maximum length for a path is MAX_PATH, which is defined as 260 characters. A local path is structured in the following order: drive letter, colon, backslash, components separated by backslashes, and a terminating null character. For example, the maximum path on drive D is

    D:\some 256 character path string<NUL>

where "" represents the invisible terminating null character for the current system codepage. (The characters < > are used here for visual clarity and cannot be part of a valid path string.)

    
por 09.06.2009 / 13:43
2

Veja o link

é uma das decisões de design mais idiotas da família Windows NT. Até onde eu sei, não há como impedir que os usuários criem nomes extensos de arquivos.

JR

    
por 09.06.2009 / 19:46
1

Eu tive um problema semelhante ao automatizar algumas purgações parametrizadas em unidades de grupo e domésticas.

Eu escrevi um aplicativo C # personalizado para fazer isso, mas para lidar com os nomes extensos de arquivos, era necessário usar a versão Unicode da API do Win32 e não a versão usual do Ascii, que tem as limitações mencionadas acima. Isso também significa prefixar a string de caminho com \? \ Se ele estiver mapeado ou \? \ UNC \ se for através de UNC.

Posso fornecer alguns exemplos de código ou mais informações, se quiser.

    
por 09.06.2009 / 14:36