Determinare quale processo ha un blocco su un file
Domanda
Ho un test unit che funziona bene localmente ma quando caricato sul server di build TeamCity fallisce con " Il processo non può accedere al file perché è utilizzato da un altro processo. "
- Prima di fare qualsiasi cosa nel Test Controllo l'installazione se il file esiste e in tal caso prova a eliminarlo. Questo non riesce con lo stesso errore messaggio come sopra
- Quando si indossa il file, chiudo lo scrittore quindi smaltirlo che credo dovrebbe sbarazzarsi di qualsiasi risorsa.
Quindi ho un paio di domande
- Qualcuno ha avuto problemi simili e riesce a aggirarli
- Come posso scoprire tutto il programma il processo ha bloccato egoisticamente il File !!!
Saluti
Soluzione
Sysinternals FileMon contiene alcune informazioni (scorri verso il basso) su come hanno raggiunto questo obiettivo nelle versioni precedenti di Windows.
Monitor di processo è la loro ultima versione, ma non Fornisco molti indizi su come lo fanno. Ci sono alcuni articoli della knowledge base collegati lì, tuttavia, che dovrebbero condurre a queste informazioni.
-Adam
Altri suggerimenti
Sysinternals handle.exe è il primo passo. Oppure usa Process Explorer il Trova handle o DLL
. Tuttavia, è sempre più sicuro terminare il processo che chiudere l'handle.
A livello di programmazione, si tratta di scrivere un driver del kernel che legge la tabella handle di Windows.
ProcessMon (per la ricerca) e Unlocker (almeno per lo sblocco) sono utili.