Come scoprire il processo che ha un particolare file aperto

Chissà quante volte mente provavate a cancellare, spostare o rinominare un file vi è capitato di ricevere un messaggio dal vostro sistema operativo che vi diceva che il file non poteva essere cancellato visto che è in uso da un altro processo. La cosa frustrante è che il messaggio continuiamo ad averlo anche dopo aver chiuso tutti i nostri programmi in esecuzione.

Windows, come tutti i sistemi operativi, non ha alcun controllo su chi chiede di aprire un file. Quando questa applicazione si chiude, presuppone che tutti i file che erano stati aperti da questa applicazione vengano rilasciati. Questo a volte non funziona. Se un’applicazione va in crash, questa non potrà mai effettuare tutta la routine di chiusura in cui magari rilascia i file, oppure a causa di un BUG l’applicazione non rilascia il file e quindi Windows continua a ritenere che questo file sia ancora aperto da questa applicazione. Cosi ogni volta che si andrà a cancellare, spostare o fare qualsiasi altra operazione distruttiva sul file si ottiene giustamente quel messaggio di errore.

Purtroppo Windows non ha una utility per aiutarci a superare questo problema. Anche se qualcuno in Microsoft ha riconosciuto la necessità di tale strumento e ha rilasciato l’eccellente Sysinternals Process Explorer. Noi di questo strumento abbiamo già parlato in questo blog quando abbiamo parlato di SVCHOST.EXE.

Tra le molte proprietà di questa applicazione troviamo anche quella utile a noi per visualizzare il processo che ha aperto il file che vogliamo cancellare, rinominare o spostare. In Windows, ogni volta che un’applicazione vuole accedere o aprire un file lo fa con qualcosa chiamato File Handle, che non è nient’altro che un puntatore al file particolare nella memoria. Quando una applicazione va in crash o ha un bug magari non chiude questo file handle che viene aperto e gli utenti iniziano ad avere il messaggio che spiegavo sopra.

Ora andiamo vedere come utilizzare Process Explorer per trovare il processo che ha aperto il File Handle. Ecco questi semplici passi:

  • Avviate Process Explorer
  • Fate click su Find e poi Find Handle or DLL
  • Inserite il nome del file che state cercando di cancellare, spostare o rinominare e cliccate su Cerca.

Process Explorer visualizzerò il nome del processo che il file aperto. Cliccate su questo processo per evidenziare il processo e il file handle aperto nella finestra principale. Cliccate su Cancel per passare alla finestra principale.

Clic con il pulsante destro del mouse sopra il File Handle e cliccate su Close Handle. Ora dovreste essere in grado di eliminare, spostare o rinominare il file. Process Explorer è totalmente gratuito, ed è, a mio parere, uno di quegli strumenti molto utili che dovrebbero essere presenti in ogni installazione di Windows. Potete inserire questo file nella cartella system32 di Windows cosi da lanciarla direttamente da Start -> Esegui -> Inserite “procexp” e cliccate s OK.

via [geekyninja]

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.