Data de criação incorreta do arquivo no Windows XP / Vista

7

Verifique isso:

  1. Crie um novo arquivo na sua máquina Windows.
  2. Anote sua data / hora de criação.
  3. Exclua o arquivo.
  4. Espere um pouco.
  5. Crie um novo arquivo no mesmo diretório, com o mesmo nome que o anterior.
  6. A data / hora de criação do novo arquivo será igual à do anterior!

Eu verifiquei isso no Windows XP SP3 e no Windows Vista SP2 x64. Eu acho difícil acreditar que seja um bug. É realmente um bug com o sistema operacional? Se não, por que esse comportamento? Está me atrapalhando, já que uso a data / hora de criação do arquivo para acompanhar os ciclos de backup em um aplicativo personalizado que estamos desenvolvendo.

Obrigado.

    
por CesarGon 09.12.2009 / 21:44

4 respostas

8

Este parece ser um recurso documentado chamado Túnel do Sistema de Arquivos. Consulte o link para obter detalhes sobre isso e como desativá-lo por meio de uma configuração de registro.

    
por 06.03.2012 / 18:06
7

Eu não acredito que seja um bug, acho que é por design. Eu me deparei com isso alguns meses atrás eu mesmo.

Considere um aplicativo que cria uma cópia de trabalho temporária do arquivo que você acabou de abrir. Enquanto você trabalha, suas alterações são gravadas no arquivo temporário. Quando você terminar e optar por salvar o arquivo, o aplicativo excluirá o original e renomeará ou copiará o arquivo temporário para o nome do arquivo original. Não é muito comum, mas não é incomum (muitos aplicativos antigos e simples funcionam dessa maneira ... editores de texto e afins).

No caso acima, toda vez que você salvou um arquivo, sua data de criação sempre corresponderia à última modificação!

Eu não sei que tipo de lixo está acontecendo nos bastidores, talvez alguém com algum insight forneça mais detalhes. Como um aparte, alguns sistemas de arquivos não armazenam datas de criação, apenas datas modificadas e acessadas (ext2, por exemplo).

Atualização: achei o seguinte dos escritores do xxcopy, no link , que pode se aplicar ao que você é fazendo:

Since the use of the File-Create date has serious problems, we generally discourage the use if this date

Problems with the file creation date (File-Create date),

The problems of the File-Create date can be traced back to the inconsistency in Microsoft's various file management utilities. It seems that the purpose of three distinct
variations in the file date values were never clearly defined by the designer of the feature. We as software developers have not come across any official documents on this subject.

    
por 09.12.2009 / 23:52
2

Eu acho que o Windows está sendo preguiçoso e - ao ver que todo o resto do novo arquivo é idêntico ao antigo - apenas reutiliza uma entrada na tabela do sistema de arquivos que havia sido marcada para exclusão.

Esse tipo de comportamento é documentado na verdade aqui .

Timestamps are updated at various times and for various reasons. The only guarantee about a file timestamp is that the file time is correctly reflected when the handle that makes the change is closed.

(minha ênfase)

Editar para adicionar: eu acho que você gostaria de usar algo como SetFileTime no seu aplicativo depois de criar o arquivo.

    
por 10.12.2009 / 00:21
2

Eu encontrei isso com win32 DeleteFile no windows 7 SP1.

Tentei alguns truques para usar a data apropriada "criada", mas sem alegria. Se você esperar de 2 a 3 minutos após a exclusão do arquivo, crie o novo, a data estará correta. Provavelmente precisa de uma rotina win32 'liberar todos os arquivos'.

Poderia causar insetos desagradáveis, coisa bastante duvidosa de se fazer, na minha opinião, design desleixado. O arquivo foi excluído, não deveria haver nenhum "fantasma" como este. Se você está preocupado, sugira usar win32 SetFileTime .

    
por 16.11.2011 / 13:36

Tags