Como os arquivos “bloqueados” são manipulados pelo sistema (ex. WinXP)?

3

Como exatamente os arquivos bloqueados são manipulados pelo sistema operacional?

Ou, para ser mais preciso, por que às vezes não consigo excluir um arquivo bloqueado de um Windows Explorer, mas se eu abrir um prompt de comando no diretório em questão, posso excluí-lo de lá?

    
por Rook 10.07.2009 / 18:10

3 respostas

4

Quando um processo abre um identificador para um arquivo ou diretório, ele especifica qual nível de compartilhamento ele deseja. O nível de compartilhamento pode ser qualquer combinação dos sinalizadores FILE_SHARE_DELETE, FILE_SHARE_READ e FILE_SHARE_WRITE. Os nomes das bandeiras são bastante óbvios. Se eu especificar FILE_SHARE_READ isso permite que outros processos leiam o arquivo, FILE_SHARE_WRITE permite que outros processos gravem o arquivo (possivelmente alterando-o sob meus pés) e FILE_SHARE_DELETE permite que outros processos excluam o arquivo (embora eu ache que ele não seja deletado até depois que eu fecho meu identificador de arquivos).

De qualquer forma, se algum processo abrir um identificador para um arquivo e não especificar FILE_SHARE_DELETE, isso significa que nenhum outro processo pode excluir o arquivo até que o primeiro processo tenha fechado seu identificador. Esse é o motivo comum para você obter esses erros "o arquivo está bloqueado por outro processo". Observe que os processos também podem abrir alças para diretórios, portanto isso também se aplica à exclusão de diretórios, mesmo que estejam vazios.

Quanto ao motivo pelo qual você pode excluir um arquivo de um prompt de comando quando não é possível excluí-lo do Explorer, não entendo por que isso aconteceria. Eu precisaria ver com meus próprios olhos.

JR

    
por 10.07.2009 / 19:12
1

John está certo ... você não pode apagar arquivos que estão em uso, porque ... eles estão em uso. É a mesma razão pela qual você não pode trocar seus pneus enquanto dirige para o trabalho. Todos os tipos de coisas inesperadas aconteceriam.

Se você quiser saber qual processo está usando o arquivo (para que você possa eliminar temporariamente o processo para liberar o bloqueio no arquivo, use Process Explorer da Microsoft / Sysinternals.

  • Clique no menu Localizar e escolha Localizar identificador ou DLL ...
  • Digite o nome do arquivo que você não consegue excluir que está bloqueado por algum processo
  • Depois de digitar a frase de pesquisa, clique no botão Pesquisar

Se um arquivo estiver em uso pelo Windows, você pode usar o MoveOnBoot da Gibin Software para exclua o arquivo bloqueado após a reinicialização.

    
por 10.07.2009 / 19:30
0

Eu acho que você tem alguma extensão de terceiros no explorador que abre o arquivo para um pouco para escanear o arquivo, fazendo com que o explorador o bloqueie. São apenas arquivos maiores com esse problema? Bloqueios são bloqueios no mundo do Windows, nenhum prompt de comando pode excluir um arquivo bloqueado (embora, como observado acima, há maneiras de fechar o bloqueio, em seguida, exclua o arquivo)

    
por 10.07.2009 / 19:39