O diretório não oculto não é exibido no Explorer, mas o programa que o fez pode acessá-lo

26

Estou usando o IMAPSize para fazer backup de minhas caixas de correio. O processo apenas despeja o conteúdo da sua caixa de correio em arquivos .eml em seu disco. De qualquer forma, a primeira caixa de correio que eu fiz backup aparece como eu esperava. No entanto, o próximo não é exibido no Explorer e, se eu inseri-lo na barra de endereço, ele me diz que ele não existe.

No entanto, o IMAPSize está insistindo que os arquivos estão lá. (Muitas gravações em disco estavam sendo executadas durante a operação). Além disso, o diretório aparece na caixa de diálogo de diretórios do Windows e - como eu tenho as ferramentas GNU instaladas - ele mostra ls (mas não no nativo dir ). Eu não posso cd no diretório, mas ls parece ser capaz de acessá-lo (e, de fato, os diretórios e arquivos que eu espero parecem estar lá).

Observe também que o registro de data e hora e o tamanho do arquivo de backup.db são diferentes na dir e ls -l saída.

Resumindo: O que está acontecendo aqui e como conserto?

    
por Xophmeister 02.04.2016 / 01:56

1 resposta

63

Deixe-me adivinhar: o programa que criou o arquivo, e também os utilitários GNU, não estão sendo executados como administrador.

Primeiro, um pouco de história. Nos dias do Windows XP, muitos programas presumiam que eles sempre seriam executados como admin e gravariam em lugares como C:\Windows e C:\Program Files (x86) com abandono. Com o Vista, a Microsoft tentou tornar menos administradores de pessoas, mas os usuários padrão não podem gravar nesses lugares. Eles precisavam desses programas duvidosos para continuar trabalhando (ou então as pessoas não atualizariam). Então, eles introduziram um recurso mágico chamado virtualização do UAC .

Os programas em execução como usuários padrão podem considerar suas gravações em locais importantes bem-sucedidas, mas, na realidade, o Windows os separou em um local por usuário. Quando esses programas procuram por arquivos em um diretório, o Windows verifica se existem arquivos no armazenamento virtual do local e, em caso afirmativo, os adiciona à listagem de diretórios. (Existe funcionalidade equivalente para o Registro.)

Parece que seu programa de e-mail tentou gravar em um local em Program Files (x86) durante a execução como um usuário normal. A gravação foi redirecionada, por isso não chegou a esse lugar. O programa ainda pode vê-lo, porque o Windows está mantendo a ilusão para ele. O Explorer não o vê porque anuncia ao sistema operacional que é bem comportado e, portanto, não precisa de redirecionamento. O comando dir do prompt de comando não é um programa (é apenas um recurso de cmd.exe ), portanto também é considerado "no conhecimento" e, portanto, não são mostrados os arquivos de compatibilidade. ls é um programa que, evidentemente, não está no conhecimento, então ele consegue ver os arquivos de compatibilidade.

Você encontrará seu arquivo aqui:

%LOCALAPPDATA%\VirtualStore\Program Files (x86)\IMAPSize\backup

Enquanto busca em VirtualStore , você pode se surpreender com quais programas não são bem comportados e precisa da rede de segurança de virtualização.

Se você quiser interromper o redirecionamento, execute o programa como administrador ou salve seus backups em um local em que possa realmente gravar sem privilégios de administrador.

    
por 02.04.2016 / 02:18