Come identificare il processo che ha bloccato un file in Windows

click fraud protection

Quando si tenta di eliminare un file o una cartella in uso da un processo, viene visualizzata la finestra di dialogo File in uso che mostra il nome del programma che ha bloccato il file.

Tuttavia, ci sono casi in cui la finestra di dialogo "File in uso" non mostra il nome del processo che ha un blocco sul file che stai cercando di eliminare. In alcuni casi, la finestra di dialogo mostrerà "l'azione non può essere completata perché il file è aperto in un altro processo“.

Trova quale processo ha bloccato un file

Per esaminare i processi e i file bloccati, Windows Sysinternals Process Explorer è probabilmente la prima opzione che viene in mente alla maggior parte degli utenti. Tuttavia, ce ne sono due soluzioni integrate per visualizzare l'elenco dei file aperti correnti insieme ai nomi dei processi corrispondenti.

Trova quale processo ha bloccato un file usando:

  1. Monitoraggio risorse (resmon.exe)
  2. Process Explorer di Microsoft Sysinternals
  3. Gestire da Microsoft Sysinternals
    • Trova l'handle del file tramite il menu di scelta rapida
  4. Strumento console integrato Openfiles.exe
    • Abilita il monitoraggio degli handle di file locali
    • Visualizza i file aperti e i nomi dei processi corrispondenti
    • Disconnetti i file aperti dalle cartelle condivise
  5. OpenedFilesView da Nirsoft.net (terze parti)

1. Sorvegliante delle risorse

Resource Monitor (resmon.exe) è uno strumento integrato che ha molte funzioni utili. Con Resource Monitor, puoi tenere traccia della rete corrente e dell'utilizzo di Internet, visualizza le maniglie associate per file bloccati, oltre a gestire i processi proprio come faresti con il Task Manager.

Per trovare il nome del processo che ha un file bloccato, fare clic sulla scheda CPU, digitare il nome del file o parte di esso nella casella di testo Handle associati.

Trova quale processo ha bloccato un file

Abbiamo trattato Resource Monitor in precedenza. Dai un'occhiata a questi articoli:

  • Come utilizzare Resource Monitor per trovare quale processo ha bloccato un file?
  • Quale programma utilizza tutta la larghezza di banda di Internet? Usa Resource Monitor per trovarlo

2. Esplora processi

Esplora processi non ha bisogno di presentazioni. In Process Explorer, tutto ciò che devi fare è utilizzare la funzione Trova e digitare il nome del file. Questo mostra il processo che sta accedendo al file.

Trova quale processo ha bloccato un file

Se necessario, dalla visualizzazione del riquadro inferiore è possibile chiudere l'handle del file.

È necessario eseguire Process Explorer come amministratore per gestire i processi in esecuzione con privilegi elevati. Per elevare Process Explorer, fai clic sul menu File → Mostra dettagli per tutti i processi.

Dai un'occhiata a questi articoli relativi a Process Explorer:

  • Come eliminare un file o una cartella non cancellabile ostinato in Windows?
  • Trova quale programma sta utilizzando la tua webcam attualmente
  • Come trovare quale programma ha causato un messaggio di errore sconosciuto?
  • Cosa significa Impossibile enumerare gli oggetti nel contenitore?

3. Gestire da Windows Sysinternals

Maneggiare è un'utilità di Microsoft Sysinternals che visualizza informazioni sugli handle aperti per qualsiasi processo nel sistema. Puoi usarlo per vedere i programmi che hanno un file aperto, o per vedere i tipi di oggetti ei nomi di tutti gli handle di un programma. Handle è come una versione da riga di comando di Esplora processi.

Nota: Handle v4.21 ha un piccolo insetto dove riporta sempre "Nessun handle corrispondente trovato" se la lettera di unità è in maiuscolo. Spero che Microsoft lo risolva nel prossimo aggiornamento.

Da un admin Prompt dei comandi finestra, utilizzare la sintassi della riga di comando per trovare il processo che sta aprendo il file:

handle.exe -a -u nomefile_con_percorso

Se il nome del file contiene spazi, racchiuderlo tra virgolette.

Esempio:

handle.exe -a -u "c:\users\ramesh\desktop\Mandate-form.pdf"
trova quale file di processo bloccato - gestisce sysinternals

(Citare il nome del file senza il percorso potrebbe non funzionare necessariamente in ogni situazione. Si consiglia di includere sempre il percorso completo.)

L'output mostra il nome del processo, l'identificatore del processo, il nome utente, il nome del file bloccato (destinazione) con percorso.

Gestire Sysinternals: argomenti della riga di comando

utilizzo: handle [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [nome] [-nobanner]
-un Scarica tutte le informazioni sull'handle.
-l Mostra solo gli handle di sezione supportati da file di paging.
-C Chiude l'handle specificato (interpretato come numero esadecimale).
È necessario specificare il processo tramite il relativo PID. AVVISO: la chiusura degli handle può causare l'instabilità dell'applicazione o del sistema.
-y Non richiedere la conferma dell'handle di chiusura.
-S Conteggio stampe di ogni tipo di maniglia aperta.
-u Mostra il nome utente proprietario durante la ricerca di handle.
-P Dump handle appartenenti al processo (nome parziale accettato).
nome Cerca maniglie per oggetti con (frammento accettato).
-nobanner Non visualizzare il banner di avvio e il messaggio di copyright.

Nessun argomento scaricherà tutti i riferimenti ai file.

Aggiungi la maniglia Sysinternals al menu di scelta rapida

Puoi aggiungere Sysinternals Handle al menu di scelta rapida per i file per trovare rapidamente il programma che ha bloccato il file. Per aggiungerlo al menu contestuale, segui questi passaggi:

  1. Scarica Maneggiare dal sito Microsoft Sysinternals.
  2. Copia i file handle.exe & handle64.exe in una cartella, ad es. d:\strumenti
  3. Copia le seguenti righe di codice su Blocco note e salva il file come find_handle.vbs in una posizione permanente.
    'Esegue l'utilità Sysinternals Handle.exe con l'argomento del nome file. '© Ramesh Srinivasan -- https://winhelponline.com/blog. 'Data di creazione: 29 marzo 2008. 'Data di aggiornamento: 11 giugno 2019. 'Per tutte le versioni di Windows, inclusa l'opzione esplicita di Windows 10. Dim objShell, WshShell, objFSO, sBaseKey, sFilename. Imposta objShell = CreateObject("Shell. Applicazione") Imposta WshShell = CreateObject("WScript. Conchiglia") Imposta objFSO = CreateObject("Scripting. FileSystemOggetto") Se WScript. Argomenti. Conteggio = 0 Quindi sBaseKey = "HKCU\Software\Classes\*\shell\" WshShell. RegWrite sBaseKey & "FindHandle\", "Trova handle", "REG_SZ" WshShell. RegWrite sBaseKey & "FindHandle\command\", "wscript.exe " & & _ WScript. NomeCompletoScript & & " " & & "%1" &, "REG_SZ" Else If objFSO.FileExists (WScript. Argomenti (0)) = True Quindi sFilename = lcase (WScript. Argomenti (0)) objShell. ShellExecute "cmd.exe", "/k d:\tools\handle.exe -a -u " & _ & sFilename &, "", "runas", 1 End If. Finisci se

    Nota: Il percorso Sysinternals Handle.exe è hardcoded come d:\tools\handle.exe nello script sopra. Se il programma si trova su un percorso diverso, modificare di conseguenza il percorso nello script. Per Windows a 64 bit, puoi usare entrambi handle.exe o handle64.exe

  4. Doppio click find_handle.vbs per aggiungere la voce del menu di scelta rapida nel registro. Dovrai farlo solo una volta. Tuttavia, se sposti lo script in una cartella diversa, dovrai fare di nuovo doppio clic su di esso per aggiornare il percorso nel registro.
  5. Vedrai il Trova maniglia opzione quando si fa clic con il pulsante destro del mouse su un file. Facendo clic su di esso, verrà avviato lo script che a sua volta esegue handle.exe con l'argomento filename per trovare il processo che ha bloccato il file.trova quale file di processo bloccato - gestisce sysinternals

Per rimuovere il Trova maniglia voce del menu contestuale, avviare l'editor del registro (regedit.exe) ed eliminare la seguente chiave:

HKEY_CURRENT_USER\Software\Classes\*\shell\FindHandle

4. OpenFiles.exe — uno strumento console integrato

Un altro strumento integrato che utilizzeremo è Openfiles.exe, uno strumento console che non è nuovo per Windows. È stato originariamente introdotto nel 2000 come parte degli strumenti di Windows Resource Kit 2000/2003. Questa utility è stata quindi inclusa per impostazione predefinita in Windows Vista e versioni successive (incluso Windows 10). Openfiles visualizza l'elenco dei file attualmente aperti dalle cartelle locali o condivise, insieme all'ID handle e al nome dell'eseguibile del processo. Questo strumento consente anche di disconnettere uno o più file aperti in remoto da una cartella condivisa.

Abilita il flag globale "Mantieni elenco oggetti" per la prima volta

Innanzitutto, per abilitare il tracciamento degli handle di file locali, è necessario attivare il flag "Mantieni l'elenco degli oggetti" eseguendo il seguente comando dal prompt dei comandi di amministrazione.

openfiles /local su

Vedrai il seguente messaggio:

INFO: Il flag globale di sistema "Mantieni elenco oggetti" è attualmente abilitato.

Dovrai eseguire questo comando solo per la prima volta. Quindi riavvia Windows per rendere effettive le modifiche.

Visualizza i file aperti e i nomi dei processi corrispondenti

Dopo aver riavviato Windows, da un admin Prompt dei comandi finestra, digitare:

file aperti

Questo elenca l'ID file/handle, il nome del processo e l'elenco dei file aperti localmente o aperti in remoto tramite punti di condivisione locali, in un formato tabella.

Per visualizzare l'output nei formati Elenco o CSV, utilizzare il parametro /query.

openfiles /query /FO LIST. file aperti /query /FO CSV

Per copiare l'output negli appunti, reindirizzare l'output a Clip.exe come di seguito. Quindi incolla l'output nel Blocco note o in qualsiasi altro editor di tua scelta.

file aperti | clip
Trova quale processo ha bloccato un file
openfiles /query /FO LIST |clip. file aperti /query /FO CSV |clip
Trova quale processo ha bloccato un file

Per ulteriori informazioni sulla copia dell'output del prompt dei comandi negli appunti o sul salvataggio dell'output in un file, consulta l'articolo Come copiare il testo di output del prompt dei comandi negli Appunti o salvarlo su file?

Per scoprire se un particolare file è utilizzato da un programma (e per sapere quale programma), puoi utilizzare la seguente riga di comando.

file aperti | findstr /i 

Esempio:

file aperti | findstr /i eiffel

Il comando sopra elenca tutti i file aperti che contengono la parola "eiffel" nel nome del file. In questo esempio, Word 2016 ha attualmente il blocco sul file "The Eiffel Tower.docx" (ID 4576).

Trova quale processo ha bloccato un file

E la finestra di dialogo "File in uso" mi dice la stessa cosa.

Trova quale processo ha bloccato un file

Scollega i file aperti in remoto dalla cartella condivisa.

Per disconnettere i file aperti dalla cartella condivisa in modo da poter eliminare, rinominare il file o modificarne il contenuto, utilizzare il pulsante /disconnect parametro per tagliare le connessioni a quel file. Ecco le opzioni della riga di comando.

OPENFILES /Disconnect [/S system [/U nome utente [/P [password]]]] {[/ID ID] [/A cui si accede da] [/O openmode]} [/OP openfile] Descrizione: consente a un amministratore di disconnettere file e cartelle che sono stati aperti in remoto tramite una condivisione cartella. Elenco parametri: /S sistema Specifica il sistema remoto a cui connettersi. /U [dominio\]utente Specifica il contesto utente in cui deve essere eseguito il comando. /P [password] Specifica la password per il contesto utente specificato. /ID id Specifica di disconnettere i file aperti in base all'ID file. È possibile utilizzare il carattere jolly "*". /A accessedby Specifica di disconnettere tutti i file aperti in base al valore "accessedby". È possibile utilizzare il carattere jolly "*". /O openmode Specifica di disconnettere tutti i file aperti in base al valore "openmode". I valori validi sono Lettura, Scrittura o Lettura/Scrittura. È possibile utilizzare il carattere jolly "*". /OP openfile Specifica di disconnettere tutte le connessioni file aperte create da un nome di "file aperto" specifico. È possibile utilizzare il carattere jolly "*". /? Visualizza questo messaggio di aiuto. Esempi: OPENFILES /Disconnect /? OPENFILES /Disconnetti /ID 1 OPENFILES /Disconnetti /A nome utente OPENFILES /Disconnetti /O Leggi/Scrivi OPENFILES /Disconnetti /OP "c:\My Documents\somedoc.doc" /ID 234 OPENFILES /Disconnect /S sistema /U username /ID 5 OPENFILES /Disconnect /S system /U username /P password /ID *

Openfiles.exe fa perfettamente il lavoro di elencare tutti i file aperti insieme ai nomi dei processi, ma non può uccidere forzatamente i processi. Tuttavia, questo eccellente (ma trascurato) strumento console integrato può tornare utile quando si desidera trovare rapidamente un nome di processo che sta utilizzando un file o per disconnettere un file a cui si accede tramite una cartella condivisa da un utente di rete, senza dipendere da terze parti soluzione.

5. Visualizza file aperti

Visualizza file aperti da Nirsoft visualizza l'elenco di tutti i file aperti sul sistema. Per ogni file aperto, vengono visualizzate informazioni aggiuntive: valore dell'handle, accesso in lettura/scrittura/eliminazione, posizione del file, processo che ha aperto il file e altro... Facoltativamente, puoi anche chiudere uno o più file aperti o chiudere il processo che li ha aperti File.

Trova quale processo ha bloccato un file

È possibile chiudere i processi dei file selezionati o chiudere gli handle di file selezionati. Il numero di handle è rappresentato in valori esadecimali mentre lo strumento console openfiles.exe lo mostra nel formato normale. Questo strumento ti consente anche di aggiungere un'opzione del menu di scelta rapida per trovare rapidamente il processo che sta attualmente utilizzando un file, tramite il menu di scelta rapida. L'opzione del menu di scelta rapida/supporto della riga di comando, a mio avviso, è una delle funzionalità più utili offerte da OpenedFilesView.


Una piccola richiesta: se ti è piaciuto questo post, condividilo?

Una "piccola" condivisione da parte tua sarebbe di grande aiuto per la crescita di questo blog. Alcuni ottimi suggerimenti:
  • Fissalo!
  • Condividilo sul tuo blog preferito + Facebook, Reddit
  • Twittalo!
Quindi grazie mille per il tuo supporto, mio ​​lettore. Non ci vorranno più di 10 secondi del tuo tempo. I pulsanti di condivisione sono proprio sotto. :)

Ezoicosegnala questo annuncio