Come trovare e chiudere tutti i file aperti gestisce su un'unità rimovibile (prima espulsione)

StackOverflow https://stackoverflow.com/questions/1862028

Domanda

Sto cercando di espellere un (virtuale) un'unità rimovibile, e viene a mancare, perché ci sono alcuni handle di file aperti, forse Esplora risorse di Windows. Qual è il modo migliore per ottenere tutte le maniglie aperte ai file su tale unità e chiuderli?

E 'anche fattibile (entro user-mode) per trovare eventuali processi in esecuzione fuori tale unità, così posso avvertire l'utente con il nome del processo?

Idealmente mi piacerebbe fare questo all'interno di un'applicazione in modalità utente, piuttosto che richiedere privilegi di amministratore.

sto usando VC ++ in Visual Studio 2005, in un app MFC, ma i campioni in qualsiasi lingua sarebbe il benvenuto!

È stato utile?

Soluzione

Il processo di Utility Explorer può cercare handle aperti, ma non so se può farlo senza privilegi elevati. Da quello che ho potuto raccogliere, si fa questo utilizzando l'API "Contatori delle prestazioni".

Credo che questo articolo fa quello che ti serve, elencare i processi in esecuzione, enumerare le maniglie per ognuno, cercare un handle di file fa riferimento a un percorso sul disco in questione:

Come enumerare processo maniglie?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top