2009-11-21 10 views
6

Ho bisogno di un modo per ottenere tutti gli handle di file di un determinato processo.Ottenere gli handle di file di un determinato processo

ad esempio, dato l'handle del processo winword.exe, vorrei ottenere l'elenco degli handle di file di quel processo (file doc ecc.).

sto usando l'API di Win32 tramite C#/pInvoke.

Grazie!

risposta

8

Una soluzione semplice sarebbe utilizzare handle.exe e leggere l'output. Un'altra soluzione è usare P/Invoke con la funzione NtQuerySystemInformation. This e this post del forum su SysInternals ha più dettagli così come questo article su CodeProject. Farlo nel codice gestito potrebbe essere molto difficile dato che dovrai scrivere un driver per leggere lo spazio degli indirizzi del kernel.

Si consiglia di esporre la funzionalità necessaria in una funzione Win32 che è possibile chiamare dal codice gestito.

+0

può Handle.exe vista STDERR e STDOUT? quando eseguo 'handle.exe -a -p 1234', il numero di handle più basso emesso è 4, ma STDERR è # 2 corretto? –

Problemi correlati