Pergunta

De modo kernel no Windows eu sou capaz de interceptar e monitorar praticamente todas as ações executadas em um disco específico. Quando um arquivo é aberto para qualquer finalidade eu recebo um evento.

Agora eu quero rastrear qual aplicativo que abriu. Eu acho que isso deve ser possível, mas não sei como.

Eu estou usando as funções de gerenciamento de arquivo padrão no Windows Win32 API.

Agradecemos antecipadamente.

/ Robert

Foi útil?

Solução

Apenas uso Win32 N.API para obter o pid do identificador de arquivo. É um FAQ para 15 anos ...

Outras dicas

Sysinternals Filemon (livre) faz isso, e melhor ainda eles descrevem como eles fizeram isso:

Para o driver do Windows 9x, o coração de FileMon está no dispositivo virtual motorista, Filevxd.vxd. É dinamicamente carregado, e em que a sua inicialização instala um filtro sistema de arquivos através da serviço VxD, IFSMGR_InstallFileSystemApiHook, a inserir-se na corrente de chamada todas as solicitações de sistema de arquivos. no Windows NT coração de FileMon é um arquivo controlador do sistema que cria e adidos dispositivo de filtro para objetos dispositivo de sistema de arquivo de destino objetos de modo que FileMon vai ver todos os IRPs e FastIO solicitações dirigidas a unidades. Quando FileMon vê um diálogo aberto, criar ou triz, ele atualiza uma interna tabela hash que serve como o mapeamento entre identificadores de arquivos internos e arquivo nomes de caminho. Sempre que vê chamadas que são manipular base, ele procura o lidar na tabela hash para se obter o nome completo para exibição. Se um referências de acesso à base de manipular um arquivo aberto antes FileMon começou, FileMon vai deixar de encontrar o mapeamento em sua tabela hash e irá simplesmente apresentar o valor da alça vez.

-Adam

Sysinternals fez um tão bom trabalho em fazê-lo e explicá-lo, de que algum código fonte da versão antiga ainda estão disponíveis aqui por exemplo, e o código é bem documentada (IMHO). Poderia ser um bom começo também.

Gostaria de usar o app "Handle.exe" da Sysinternals.

Ou, você está realmente tentando fazer isso programmactically?

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