Determinar qual processo tem um bloqueio em um arquivo
Pergunta
Eu tenho um teste de unidade que funciona bem localmente, mas quando carregado para o servidor TeamCity construção falhar com "O processo não pode acessar o arquivo porque ele está sendo usado por outro processo."
- Antes de fazer qualquer coisa no Teste I check-in a configuração se o arquivo existe e se assim for tentar excluí-lo. Esta falha com o mesmo erro mensagem como acima
- Quando wriitng o arquivo, eu fechar o escritor, em seguida, descartá-lo, que eu acredito que deve se livrar de quaisquer recursos.
Então, eu tenho um par de consultas
- Alguém já teve problemas semelhantes e conseguem contorná-las
- Como pode descobrir programticall que processo tem bloqueado a selfishly arquivo !!!
Felicidades
Solução
FileMon tem algumas informações (para baixo de rolagem) sobre como eles conseguiram isso em versões mais antigas do Windows.
monitor de processo é a sua versão mais recente, mas ele doesn' t dar muitas pistas sobre como eles fazem isso. Existem alguns artigos da base de conhecimentos ligados lá, porém, que deve levá-lo a esta informação.
-Adam
Outras dicas
Handle.exe é o primeiro passo. Ou use Explorador 's Find Handle or DLL
. É sempre mais seguro para matar o processo do que fechar o identificador, no entanto.
programaticamente, é uma questão de escrever um driver de kernel que lê a tabela alça do Windows.
ProcessMon (para encontrar) e Unlocker (pelo menos para desbloqueio) são úteis também.