Question

À partir du mode noyau sous Windows, je peux intercepter et surveiller pratiquement toutes les actions effectuées sur un disque particulier. Quand un fichier est ouvert à quelque fin que ce soit, je reçois un événement.

Maintenant, je veux savoir quelle application l'a ouvert. Je pense que cela devrait être possible, mais je ne sais pas comment.

J'utilise les fonctions de gestion de fichiers standard de l'API Windows Win32.

Merci d'avance.

/ Robert

Était-ce utile?

La solution

Utilisez simplement Win32 N.API pour obtenir le pid à partir du descripteur de fichier. C'est une FAQ depuis 15 ans ...

Autres conseils

Sysinternals Filemon (gratuit) le fait et mieux encore ils décrivent comment ils l'ont fait:

  

Pour le pilote Windows 9x, le coeur   de FileMon est dans le périphérique virtuel   pilote, Filevxd.vxd. C'est dynamiquement   chargé, et dans son initialisation il   installe un filtre de système de fichiers via le   Service VxD,   IFSMGR_InstallFileSystemApiHook, à   s'insère dans la chaîne d'appel de   toutes les demandes de système de fichiers. Sur Windows   NT le coeur de FileMon est un fichier   pilote système qui crée et   attache des objets de périphérique de filtre à   objets de périphérique du système de fichiers cible afin   que FileMon verra tous les IRP et   Les demandes FastIO adressées aux lecteurs.   Lorsque FileMon voit une ouverture, créez ou   appel proche, il met à jour un interne   table de hachage qui sert de mappage   entre les descripteurs de fichiers internes et les fichiers   noms de chemins. Chaque fois qu'il voit des appels   qui reposent sur les poignées, il recherche le   manipuler dans la table de hachage pour obtenir le   nom complet pour l'affichage. Si un   L'accès basé sur le handle référence un fichier   ouvert avant le démarrage de FileMon, FileMon   échouera à trouver la cartographie dans son   table de hachage et présentera simplement le   la valeur de la poignée à la place.

-Adam

Sysinternals a fait un si bon travail en expliquant que certains codes sources de l'ancienne version sont toujours disponibles ici par exemple, et le code est bien documenté (à mon humble avis). Cela pourrait aussi être un bon début.

Je voudrais utiliser le " handle.exe " application de Sysinternals.

Ou bien, essayez-vous réellement de faire cela par programmation?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top