Como identificar o processo que bloqueou um arquivo no Windows

click fraud protection

Quando você tenta excluir um arquivo ou pasta que está em uso por um processo, a caixa de diálogo Arquivo em uso aparece mostrando o nome do programa que bloqueou o arquivo.

No entanto, há casos em que a caixa de diálogo "Arquivo em uso" não mostra o nome do processo que está bloqueado no arquivo que você está tentando excluir. Em alguns casos, a caixa de diálogo mostrará "a ação não pode ser concluída porque o arquivo está aberto em outro processo“.

Descubra qual processo bloqueou um arquivo

Para investigar processos e arquivos bloqueados, o Windows Sysinternals Process Explorer é provavelmente a primeira opção que vem à mente para a maioria dos usuários. No entanto, existem dois soluções integradas para exibir a lista de arquivos abertos no momento junto com os nomes dos processos correspondentes.

Descubra qual processo bloqueou um arquivo usando:

  1. Monitor de recursos (resmon.exe)
  2. Process Explorer da Microsoft Sysinternals
  3. Handle from Microsoft Sysinternals
    • Encontre o identificador de arquivo através do menu do botão direito
  4. Ferramenta de console integrada Openfiles.exe
    • Ativar rastreamento de identificadores de arquivos locais
    • Ver os arquivos abertos e os nomes dos processos correspondentes
    • Desconectar arquivos abertos de pastas compartilhadas
  5. OpenedFilesView da Nirsoft.net (terceiros)

1. Monitor de recursos

O Monitor de recursos (resmon.exe) é uma ferramenta interna que possui muitos recursos úteis. Com o Resource Monitor, você pode rastrear a rede atual e o uso da internet, ver alças associadas para arquivos bloqueados, bem como gerenciar processos da mesma forma que faria usando o Gerenciador de Tarefas.

Para localizar o nome do processo que possui um arquivo bloqueado, clique na guia CPU, digite o nome do arquivo ou parte dele na caixa de texto Identificadores associados.

Descubra qual processo bloqueou um arquivo

Já cobrimos o Monitor de recursos anteriormente. Confira estes artigos:

  • Como usar o Monitor de recursos para descobrir qual processo bloqueou um arquivo?
  • Qual programa está usando toda a largura de banda da Internet? Use o Monitor de recursos para encontrá-lo

2. Process Explorer

Process Explorer não precisa de introdução. No Process Explorer, tudo o que você precisa fazer é usar o recurso Localizar e digitar o nome do arquivo. Isso mostra o processo que está acessando o arquivo.

Descubra qual processo bloqueou um arquivo

Na visualização do painel inferior, você pode fechar o identificador de arquivo, se necessário.

Você deve executar o Process Explorer como administrador para gerenciar os processos que estão rodando elevados. Para elevar o Process Explorer, clique no menu Arquivo → Mostrar detalhes para todos os processos.

Confira estes artigos relacionados ao Process Explorer:

  • Como excluir um arquivo ou pasta não eliminável teimoso no Windows?
  • Descubra qual programa está usando sua webcam atualmente
  • Como descobrir qual programa causou uma mensagem de erro desconhecida?
  • O que significa Falha ao enumerar objetos no contêiner?

3. Handle from Windows Sysinternals

Lidar com é um utilitário da Microsoft Sysinternals que exibe informações sobre identificadores abertos para qualquer processo no sistema. Você pode usá-lo para ver os programas que têm um arquivo aberto ou para ver os tipos e nomes de objetos de todos os identificadores de um programa. Handle é como uma versão de linha de comando de Process Explorer.

Observação: Handle v4.21 tem um pequeno inseto onde sempre relata “Nenhum identificador correspondente encontrado” se a letra da unidade estiver em maiúsculas. Espero que a Microsoft corrija isso na próxima atualização.

De um Prompt de comando do administrador janela, use a sintaxe da linha de comando para encontrar o processo que está abrindo o arquivo:

handle.exe -a -u filename_with_path

Se o nome do arquivo contiver espaços, coloque-o entre aspas duplas.

Exemplo:

handle.exe -a -u "c: \ users \ ramesh \ desktop \ Mandate-form.pdf"
descobrir qual arquivo de processo bloqueado - sysinternals manipulam

(Mencionar o nome do arquivo sem o caminho pode não funcionar necessariamente em todas as situações. É aconselhável incluir sempre o caminho completo.)

A saída mostra o nome do processo, o identificador do processo, o nome do usuário, o nome do arquivo bloqueado (destino) com o caminho.

Identificador Sysinternals: argumentos de linha de comando

uso: lidar com [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [nome] [-nobanner]
-uma Despeje todas as informações do identificador.
-eu Apenas mostre as alças de seção apoiadas por arquivo de página.
-c Fecha o identificador especificado (interpretado como um número hexadecimal).
Você deve especificar o processo por seu PID. AVISO: Fechar alças pode causar instabilidade no aplicativo ou no sistema.
-y Não solicite confirmação de fechamento do punho.
-s Contagem de impressão de cada tipo de alça aberta.
-você Mostra o nome do usuário proprietário ao pesquisar identificadores.
-p Identificadores de despejo pertencentes ao processo (nome parcial aceito).
nome Procure alças para objetos com (fragmento aceito).
-nobanner Não exiba o banner de inicialização e a mensagem de copyright.

Nenhum argumento irá despejar todas as referências de arquivo.

Adicionar Sysinternals Handle ao menu do botão direito

Você pode adicionar Sysinternals Handle ao menu de atalho para arquivos para localizar rapidamente o programa que bloqueou o arquivo. Para adicioná-lo ao menu de contexto, siga estas etapas:

  1. Download Lidar com do site Microsoft Sysinternals.
  2. Copie os arquivos handle.exe & handle64.exe para uma pasta - por exemplo, d: \ tools
  3. Copie as seguintes linhas de código para o Bloco de Notas e salve o arquivo como find_handle.vbs para um local permanente.
    'Executa o utilitário Sysinternals Handle.exe com o argumento de nome de arquivo. '© Ramesh Srinivasan - https://winhelponline.com/blog. 'Data de criação: 29 de março de 2008. 'Data de atualização: 11 de junho de 2019. 'Para todas as versões do Windows, incluindo Windows 10 Option Explicit. Dim objShell, WshShell, objFSO, sBaseKey, sFilename. Defina objShell = CreateObject ("Shell. Aplicativo") Defina WshShell = CreateObject ("WScript. Concha") Defina objFSO = CreateObject ("Scripting. FileSystemObject ") Se WScript. Argumentos. Count = 0 Then sBaseKey = "HKCU \ Software \ Classes \ * \ shell \" WshShell. RegWrite sBaseKey & "FindHandle \", "Localizar identificador", "REG_SZ" WshShell. RegWrite sBaseKey & "FindHandle \ command \", "wscript.exe" & & _ WScript. ScriptFullName & & "" & & "% 1" &, "REG_SZ" Else If objFSO.FileExists (WScript. Argumentos (0)) = True Then sFilename = lcase (WScript. Argumentos (0)) objShell. ShellExecute "cmd.exe", "/ k d: \ tools \ handle.exe -a -u" & _ & sFilename &, "", "runas", 1 End If. Fim se

    Observação: O caminho Sysinternals Handle.exe é codificado como d: \ tools \ handle.exe no script acima. Se o programa estiver localizado em um caminho diferente, modifique o caminho no script de acordo. Para Windows de 64 bits, você pode usar qualquer handle.exe ou handle64.exe

  4. Duplo click find_handle.vbs para adicionar a entrada do menu de contexto no registro. Você precisará fazer isso apenas uma vez. Mas, se você realocar o script para uma pasta diferente, precisará clicar duas vezes nele novamente para atualizar o caminho no registro.
  5. Você verá o Encontrar alça opção quando você clica com o botão direito em um arquivo. Clicar nele iniciará o script que, por sua vez, executa o handle.exe com o argumento do nome do arquivo para encontrar o processo que bloqueou o arquivo.descobrir qual arquivo de processo bloqueado - sysinternals manipulam

Para remover o Encontrar alça entrada do menu de contexto, inicie o Editor do Registro (regedit.exe) e exclua a seguinte chave:

HKEY_CURRENT_USER \ Software \ Classes \ * \ shell \ FindHandle

4. OpenFiles.exe - uma ferramenta de console integrada

Outra ferramenta integrada que usaremos é Openfiles.exe, uma ferramenta de console que não é nova no Windows. Ele foi originalmente introduzido em 2000 como parte das ferramentas do Windows Resource Kit 2000/2003. Este utilitário foi então incluído por padrão no Windows Vista e superior (incluindo o Windows 10). Openfiles exibe a lista de arquivos atualmente abertos de pastas locais ou compartilhadas, junto com a ID do identificador e o nome do executável do processo. Essa ferramenta também permite que você desconecte um ou mais arquivos abertos remotamente de uma pasta compartilhada.

Habilite o sinalizador global “Manter Lista de Objetos” pela primeira vez

Primeiro, para permitir o rastreamento de identificadores de arquivos locais, você precisa ativar a sinalização "manter lista de objetos" executando o seguinte comando no prompt de comando do administrador.

openfiles / local em

Você verá a seguinte mensagem:

INFO: O sinalizador global do sistema 'manter lista de objetos' está habilitado no momento.

Você precisará executar este comando apenas pela primeira vez. Em seguida, reinicie o Windows para que a alteração tenha efeito.

Ver os arquivos abertos e os nomes dos processos correspondentes

Depois de reiniciar o Windows, a partir de um Prompt de comando do administrador janela, tipo:

Abrir arquivos

Isso lista o arquivo / identificador de ID, o nome do processo e a lista de arquivos abertos localmente ou remotamente por meio de pontos de compartilhamento locais, em formato de tabela.

Para visualizar a saída nos formatos de lista ou CSV, use o parâmetro / query.

openfiles / query / FO LIST. openfiles / query / FO CSV

Para copiar a saída para a área de transferência, canalize a saída para Clip.exe como abaixo. Em seguida, cole a saída no Bloco de notas ou em qualquer outro editor de sua escolha.

openfiles | clip
Descubra qual processo bloqueou um arquivo
openfiles / query / FO LIST | clip. openfiles / query / FO CSV | clip
Descubra qual processo bloqueou um arquivo

Para obter mais informações sobre como copiar a saída do Prompt de Comando para a área de transferência ou salvar a saída em um arquivo, verifique o artigo Como copiar texto de saída do prompt de comando para a área de transferência ou salvar em arquivo?

Para saber se um determinado arquivo está sendo usado por um programa (e para saber qual programa), você pode usar a seguinte linha de comando.

openfiles | findstr / i 

Exemplo:

openfiles | findstr / i eiffel

O comando acima lista todos os arquivos abertos que contêm a palavra “eiffel” no nome do arquivo. Neste exemplo, o Word 2016 está bloqueando o arquivo “The Eiffel Tower.docx” (ID 4576).

Descubra qual processo bloqueou um arquivo

E a caixa de diálogo “Arquivo em uso” me diz a mesma coisa.

Descubra qual processo bloqueou um arquivo

Desconecte os arquivos abertos remotamente da pasta compartilhada.

Para desconectar os arquivos abertos da pasta compartilhada para que você possa excluir, renomear o arquivo ou modificar o conteúdo, use o /disconnect parâmetro para cortar conexões com esse arquivo. Aqui estão as opções de linha de comando.

OPENFILES / Desconectar [/ S sistema [/ U nome de usuário [/ P [senha]]]] {[/ ID id] [/ A acessado por] [/ O openmode]} [/ OP openfile] Descrição: permite que um administrador desconecte arquivos e pastas que foram abertos remotamente por meio de um compartilhamento pasta. Lista de parâmetros: / S sistema Especifica o sistema remoto ao qual se conectar. / U [domínio \] usuário Especifica o contexto do usuário sob o qual o comando deve ser executado. / P [senha] Especifica a senha para o contexto de usuário fornecido. / ID id Especifica a desconexão de arquivos abertos por ID de arquivo. O curinga "*" pode ser usado. / A acedido por Especifica a desconexão de todos os arquivos abertos pelo valor "acessado por". O curinga "*" pode ser usado. / O openmode Especifica a desconexão de todos os arquivos abertos pelo valor "openmode". Os valores válidos são Read, Write ou Read / Write. O curinga "*" pode ser usado. / OP openfile Especifica a desconexão de todas as conexões de arquivo aberto criadas por um nome de "arquivo aberto" específico. O curinga "*" pode ser usado. /? Exibe esta mensagem de ajuda. Exemplos: OPENFILES / Disconnect /? OPENFILES / Desconectar / ID 1 OPENFILES / Desconectar / Um nome de usuário OPENFILES / Desconectar / O Ler / Gravar OPENFILES / Desconectar / OP "c: \ Meu Documentos \ somedoc.doc "/ ID 234 OPENFILES / Desconectar / sistema S / nome de usuário U / ID 5 OPENFILES / Desconectar / sistema S / nome de usuário U / senha P /IDENTIFICAÇÃO *

Openfiles.exe faz perfeitamente o trabalho de listar todos os arquivos abertos junto com os nomes dos processos, mas não pode matar os processos à força. No entanto, esta excelente (mas esquecida) ferramenta de console integrada pode ser útil quando você deseja encontrar rapidamente um nome de processo que está usando um arquivo ou para desconectar um arquivo que está sendo acessado por meio de uma pasta compartilhada por um usuário da rede - sem depender de terceiros solução.

5. OpenedFilesView

OpenedFilesView da Nirsoft exibe a lista de todos os arquivos abertos em seu sistema. Para cada arquivo aberto, informações adicionais são exibidas: valor do identificador, acesso de leitura / gravação / exclusão, posição do arquivo, o processo que abriu o arquivo e mais... Opcionalmente, você também pode fechar um ou mais arquivos abertos, ou fechar o processo que os abriu arquivos.

Descubra qual processo bloqueou um arquivo

Você pode fechar processos de arquivos selecionados ou fechar identificadores de arquivo selecionados. O número do identificador é representado em valores hexadecimais, enquanto a ferramenta de console openfiles.exe o mostra no formato normal. Essa ferramenta também permite adicionar uma opção de menu de contexto para encontrar rapidamente o processo que está usando um arquivo no momento, por meio do menu do botão direito. A opção de menu de contexto / suporte de linha de comando, eu considero, é um dos recursos mais úteis oferecidos por OpenedFilesView.


Um pequeno pedido: Se você gostou deste post, por favor, compartilhe?

Um "pequeno" compartilhamento seu ajudaria seriamente no crescimento deste blog. Algumas ótimas sugestões:
  • Fixá-lo!
  • Compartilhe com seu blog favorito + Facebook, Reddit
  • Tweet isso!
Muito obrigado pelo seu apoio, meu leitor. Não vai demorar mais de 10 segundos do seu tempo. Os botões de compartilhamento estão logo abaixo. :)

Ezoicorelatar este anúncio