Como exatamente os arquivos bloqueados são tratados pelo sistema operacional?
Ou, para ser mais preciso, por que às vezes não consigo excluir um arquivo bloqueado do Windows Explorer, mas se eu abrir um prompt de comando no diretório em questão, posso excluí-lo de lá?
Responder1
Quando um processo abre um identificador para um arquivo ou diretório, ele especifica qual nível de compartilhamento 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 será realmente excluído até depois de fechar meu identificador de arquivo).
De qualquer forma, se algum processo abrir um identificador para um arquivo e nãonãoespecifique FILE_SHARE_DELETE, isso significa que nenhum outro processo pode excluir o arquivo até que o primeiro processo feche seu identificador. Esse é o motivo comum pelo qual você recebe os erros “arquivo bloqueado por outro processo”. Observe que os processos também podem abrir identificadores 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 pode excluí-lo do Explorer, não entendo por que isso aconteceria. Eu precisaria ver com meus próprios olhos.
Jr.
Responder2
John está certo... você não pode excluir arquivos que estão em uso, porque... eles estão em uso. É o mesmo motivo pelo qual você não pode trocar os pneus enquanto dirige para o trabalho. Todo tipo de coisas inesperadas aconteceriam.
Se você quiser saber qual processo está usando o arquivo (para poder encerrar temporariamente o processo para liberar o bloqueio do arquivo, useExplorador de processosda Microsoft/Sysinternals.
- Clique no menu Localizar e escolha Localizar identificador ou DLL...
- Digite o nome do arquivo que você não consegue excluir e 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ê poderá usarMoveOnBootpela Gibin Software para excluir o arquivo bloqueado após uma reinicialização.
Responder3
Eu acho que você tem alguma extensão de terceiros no Explorer que abre o arquivo um pouco para digitalizá-lo, fazendo com que o Explorer o bloqueie. São apenas arquivos maiores que apresentam esse problema? Bloqueios são bloqueios no mundo do Windows, nenhum prompt de comando pode excluir um arquivo bloqueado (embora, como observado acima, existam maneiras de fechar o bloqueio e, em seguida, excluir o arquivo)