': Zone.Identifier' continuam aparecendo na máquina virtual do Windows XP

1

Eu tenho um convidado do Windows XP Home Edition e um host Linux Mint 13. Eu uso o VirtualBox e o diretório ~/Public é compartilhado com o convidado. Às vezes acontece que eu uso o IE no sistema convidado para baixar arquivos (até obter um navegador Windows melhor).

Todos os arquivos baixados vão para a unidade L:\ (o diretório ~/Public ). Quando eles terminarem o download, o Windows Explorer adicionará um arquivo :Zone.Identifier para cada arquivo que eu baixar. Quando eu extraio um arquivo ZIP baixado no convidado (na unidade L:\ ), o Windows cria um arquivo :Zone.Identifier para cada arquivo no diretório extraído. Isso ocorre mesmo se eu usar o host para mover um arquivo para o diretório ~/Public .

O diretório ~/Public compartilhado está em uma partição ext4 e o caractere de dois pontos deve ser ilegal em nomes de arquivos no Windows, mas não na partição ext4. Existe alguma maneira de impedir que o Windows coloque todo esse lixo no meu sistema de arquivos? (Eu poderia ter que criar um script de shell para limpar após o ato do Windows.)

Aqui está o que eu vejo no Windows Explorer:

A propósito, se eu estivesse rodando um host Mac OS X (onde os dois-pontos são caracteres de nome de arquivo ilegais) isto seria ainda mais horrível.

    
por Jonathan Reno 01.10.2012 / 16:05

1 resposta

4

Aposto que eles são usados para rastrear de onde o arquivo veio (para o windows abrir o diálogo "você tem certeza de que deseja abrir este" quando tentar abrir um arquivo .zip ou .exe baixado).

Minha memória não é 100% sobre isso, mas se bem me lembro, o : é proibido em nomes de arquivos do Windows porque é usado para fluxos alternativos em um arquivo. Você tem o fluxo de dados principal que contém o conteúdo real, mas cada arquivo pode ter fluxos alternativos nomeados que contêm metadados: C:\File\Path\Filename.exe:AlternateStreamName

Se o sistema de arquivos subjacente for EXT4, suspeito que o IE / WE esteja tentando gravar em um arquivo desse tipo e esperando que ele seja um fluxo alternativo, enquanto o driver do sistema de arquivos para a unidade L:\ está apenas criando um fluxo regular. arquivo.

(By the way, : não é proibido em NTFS, apenas a API Win32 que o Windows Explorer e a maioria dos aplicativos usam (porque eles redirecionam para fluxos alternativos). NTFS suporta qualquer caractere em um nome de arquivo, exceto NUL ( /00 ) ou barra ( NUL ) e o HFS Plus (Mac OS X) suporta qualquer caractere, exceto %code% (mas isso pode ser ainda mais restrito pelas ferramentas ou sistema operacional, dependendo das necessidades))

Ansgar Wiechers forneceu a resposta nos comentários abaixo:

Creation of ZoneIdentifier streams can be disabled by setting the policy Do not preserve zone information in file attachments to enabled. The policy is located under User Configuration\Administrative Templates\Windows Components\Attachment Manager.

For crippled Windows versions creating a DWORD registry value SaveZoneInformation with value 1 in [HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments] should have the same effect.

    
por 01.10.2012 / 16:27