Como encontrar e fechar todas as alças de arquivo aberto em uma unidade removível (antes de ejetar)

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

Pergunta

Estou tentando ejetar uma unidade removível (virtual) e falha porque existem algumas alças de arquivo abertas, talvez Windows Explorer. Qual é a melhor maneira de obter todas as alças abertas para os arquivos nessa unidade e fechá -los?

Também é viável (dentro do modo de usuário) encontrar algum processo que seja executado nessa unidade, para que eu possa avisar o usuário com o nome do processo?

Idealmente, eu gostaria de fazer isso dentro de um aplicativo no modo de usuário, em vez de exigir privilégios de administração.

Estou usando o VC ++ no Visual Studio 2005, em um aplicativo MFC, mas as amostras em qualquer idioma seriam bem -vindas!

Foi útil?

Solução

o Process Explorer O utilitário pode procurar alças abertas, mas não sei se pode fazê -lo sem privilégios elevados. Pelo que pude reunir, ele faz isso usando a API "contadores de desempenho".

Eu acho que este artigo faz o que você precisa, enumere os processos de execução, enumere as alças para cada um, procure um identificador de arquivo referenciando um caminho na unidade em questão:

Como enumerar lida com o processo?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top