O que faz com que caracteres inválidos ( \\?\
) apareçam antes de um caminho de arquivo apenas em determinadas pastas?
Caminho de arquivo inválido:
\\?\D:\computerfiles...
Os arquivos com caminho inválido não podem ser abertos na pasta original.
Os \\?\
caracteres só aparecem para alguns arquivos quando estão no local original, mas NÃO aparecem quando o arquivo é copiado para uma pasta diferente.
Só vejo isso quando encontro um arquivo que NÃO abre (como uma imagem) e verifico as Propriedades para detectar o prefixo inválido
Além disso, como posso localizar todos os caminhos com um prefixo inválido?
Responder1
Esse não é um personagem ilegal. É um sinal para o Windows desativar a manipulação de caminhos. Ele permite que você tenha caminhos maiores que MAX_PATH
.
ConformeNomeando arquivos, caminhos e namespaces:
As funções de E/S de arquivo na API do Windows convertem "/" em "\" como parte da conversão do nome em um nome no estilo NT, exceto ao usar o prefixo "\\?\", conforme detalhado nas seções a seguir.
A API do Windows tem muitas funções que também possuem versões Unicode para permitir um caminho de comprimento estendido para um comprimento total máximo de 32.767 caracteres. Esse tipo de caminho é composto de componentes separados por barras invertidas, cada um até o valor retornado no parâmetro lpMaximumComponentLength da função GetVolumeInformation (esse valor geralmente tem 255 caracteres). Para especificar um caminho de comprimento estendido, use o prefixo "\\?\". Por exemplo, "\\?\D:\caminho muito longo".
Parece que o Windows Explorer foi habilitado em algum momento para acessar caminhos longos. No processo, você pode ver o seguinte no campo “Local” na página de propriedades de um arquivo/pasta:
- O caminho “normal”, se curto o suficiente
- O caminho dos nomes 8.3 (algo como
C:\WHATEV~1\...
), se existirem nomes 8.3 neste sistema de arquivos e se for curto o suficiente - Caso contrário, o caminho de comprimento estendido
dr: Seu caminho é muito longo.