Há duas coisas que ainda não foram mencionadas nas respostas existentes.
- É possível utilizar o prefixo “extended length path” para aceder a percursos longos
- Com o Windows 10, pode activar o suporte a caminhos longos para uso geral - note, no entanto, que nem todas as aplicações funcionarão com caminhos longos, deve testar software mais antigo. Apenas software com uma entrada de manifesto apropriada poderá fazer uso disto.
Long Path Prefix
A API do Windows tem uma função especial que suporta nomes de caminhos Unicode com até 32k caracteres (cada elemento com até 255 caracteres de comprimento).
O prefixo usado para dizer à API para usar caminhos Unicode longos é `\?Há duas coisas que ainda não foram mencionadas nas respostas existentes.
- É possível utilizar o prefixo “extended length path” para aceder a percursos longos
- Com o Windows 10, pode activar o suporte a caminhos longos para uso geral - note, no entanto, que nem todas as aplicações funcionarão com caminhos longos, deve testar software mais antigo. Apenas software com uma entrada de manifesto apropriada poderá fazer uso disto.
Long Path Prefix
A API do Windows tem uma função especial que suporta nomes de caminhos Unicode com até 32k caracteres (cada elemento com até 255 caracteres de comprimento).
O prefixo usado para dizer à API para usar caminhos Unicode longos é como em:
\?\D:\very long path
Nomes UNC são normalmente usados quando se refere a caminhos em servidores remotos no formulário \servername\path name\file name
. Pode combinar isto com o prefixo de caminho longo assim: \?\UNC\server\share
Note que algumas aplicações, mal escritas mas infelizmente bastante comuns, não suportam caminhos de ficheiros UNC nem o prefixo de caminho longo.
Referência: https://msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx#maxpath
Suporte a caminhos longos
Esta é uma opção que foi adicionada às versões recentes do Windows 10. Não é, no momento da escrita, ativada por padrão, uma vez que requer suporte a aplicações específicas. Curiosamente, o PowerShell tem suporte integrado, pelo que activar esta opção permitirá que caminhos longos sejam usados directamente nos scripts PowerShell.
Pode activá-lo através do editor de Políticas de Grupo se tiver uma versão do Windows com isso. Ou pode simplesmente utilizar a seguinte alteração de Registo. Como sempre, por favor faça uma cópia de segurança da secção do registo que está a alterar antes de fazer qualquer alteração.
- Execute
regedit.exe
.
- Confirme o aviso UAC.
- Navegue até à chave:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy Objects\{48981759-12F2-42A6-A048-028B3973495F}Machine\System\CurrentControlSet\Policies
- Criar ou alterar a chave
LongPathsEnabled
.
- Se não existir, clique com o botão direito do rato em Políticas e seleccione Novo Valor da Palavra (32 bits) no menu.
- Defina
LongPathsEnabled
para 1
para activar.
Quaisquer aplicações com entradas de manifesto adequadas terão agora acesso aos caminhos longos padrão POSIX. Isto deve incluir aplicações Windows Store.
Referência: https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/
UPDATE 2017-04-09
@maoizm apontou um problema com a chave de registo acima, por isso fiz mais algumas pesquisas . Parece que agora pode definir um suporte a nomes de ficheiros longos com uma chave de sistema:
HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)
Isto ainda só funciona para aplicações que estão especificamente definidas para o utilizar (requer uma entrada no manifesto da aplicação.xml).
Também deve ter em atenção que não pode utilizar nomes de caminhos relativos com este método.