Domanda

Dalla modalità kernel in Windows sono in grado di intercettare e monitorare praticamente tutte le azioni eseguite su un determinato disco. Quando un file viene aperto per qualsiasi scopo ottengo un evento.

Ora voglio tracciare quale applicazione l'ha aperta. Penso che questo dovrebbe essere possibile ma non so come.

Sto usando le funzioni standard di gestione dei file nell'API Windows Win32.

Grazie in anticipo.

/ Robert

È stato utile?

Soluzione

Basta usare Win32 N.API per ottenere il pid dall'handle File. È una FAQ per 15 anni ...

Altri suggerimenti

Sysinternals Filemon (gratuito) fa questo, e meglio ancora descrivono come lo hanno fatto:

  

Per il driver di Windows 9x, il cuore   di FileMon è nel dispositivo virtuale   driver, Filevxd.vxd. È dinamico   caricato e nella sua inizializzazione esso   installa un filtro del file system tramite   Servizio VxD,   IFSMGR_InstallFileSystemApiHook, a   inserirsi nella catena di chiamate di   tutte le richieste del file system. Su Windows   NT il cuore di FileMon è un file   driver di sistema che crea e   collega gli oggetti dispositivo filtro a   oggetti dispositivo file system di destinazione così   che FileMon vedrà tutti gli IRP e   Richieste FastIO indirizzate alle unità.   Quando FileMon vede un open, crea o   chiamata chiusa, aggiorna un interno   tabella hash che funge da mappatura   tra handle di file interni e file   nomi dei percorsi. Ogni volta che vede le chiamate   che sono basati su handle, cerca il file   gestire nella tabella hash per ottenere il file   nome completo per la visualizzazione. Se una   l'accesso basato su handle fa riferimento a un file   aperto prima dell'avvio di FileMon, FileMon   non riuscirà a trovare la mappatura nella sua   tabella hash e presenterà semplicemente il file   gestire invece il valore.

-Adam

Sysinternals ha fatto un ottimo lavoro nel farlo e nel spiegarlo, che alcuni codici sorgente della vecchia versione sono ancora disponibili qui per esempio, e il codice è ben documentato (imho). Potrebbe anche essere un buon inizio.

Vorrei usare il " handle.exe " app da Sysinternals.

O stai davvero provando a farlo programmaticamente?

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