Savoir quel fichier est utilisé par telle application : la liste des fichiers ouverts sur le système (pour 2k/xp/2k3)

Soyez le premier à donner votre avis sur cette source.

Vue 27 079 fois - Téléchargée 1 917 fois

Description

Ce code permet d'avoir la liste des fichiers ouverts sur le système. Il emploie des fonctions non documentées.Il contient un module de classe pour obtenir cette liste.

C'est une version simplifiée de mon code http://www.vbfrance.com/code.aspx?id=25915.
L'application de ce projet pourrait être : quand on ouvre un fichier et que l'on obtient une erreur, on peut afficher l'application qui utilise le fichier actuellement. Le seul problème, c'est que ce code nécessite les droits d'ADMINISTRATEUR...

Si l'on a les droits appropriés (administrateur), on peut obtenir la liste des fichiers ouverts, même des processus système (privilège SeDebugPrivilege).

Le driver est juste là, car, parmi les fichiers il y a les pipes...et le probleme des pipes est qu'ils peuvent créer des deadlocks (blocage dû au fait qu'on attend après une ressource (le pipe) qui ne sera jamais libérée)...Or dans les objets kernels (au sens de structure mais bon c le terme) correspondants aux handles, il y a un membre de la structure dudit objet qui renseigne sur "l'occupation" de l'objet...Mais on ne peut accéder aux objets kernels qu'en mode kernel donc dans un driver...
bref, le driver regarde si un appel à NtQueryObject créera ou non un deadlock :
- si pas deadlock, il appelle ObQueryNameString (<=> NtQueryObject) pour obtenir le nom de l'objet
- si deadlock, il se débrouille avec les pointeurs vers les noms et les objets eux-mêmes pour trouver le nom complet

Conclusion :


Pour plus d'infos sur les API Native de Windows NT/2000/XP, regarder le livre "Windows NT/2000 NATIVE API Reference" de Gary Nebbett

Ce code ne fonctionne pas sous 9x/ME. Testé sur XP Pro, 2000, 2003. Ne fonctionne pas sous NT4 et Vista.

Le code du driver viendra avec la version C de ce code...

N'hésitez pas à commenter et à noter...

Codes Sources

A voir également

Ajouter un commentaire Commentaires
rolfpeter Messages postés 1 Date d'inscription lundi 1 septembre 2008 Statut Membre Dernière intervention 1 septembre 2008
1 sept. 2008 à 00:59
C'est bonne por Windows Vista. :-))
Mais il y a problems avec Windows 2003 Server (system ne trouve pas une file pour installer le service) :-(
Sorry for my terrible french ;-)
info004 Messages postés 4 Date d'inscription dimanche 11 février 2007 Statut Membre Dernière intervention 28 mars 2008
28 mars 2008 à 11:48
bonjour

voir les bases de registres si les ocx y sont enregistrées
info004 Messages postés 4 Date d'inscription dimanche 11 février 2007 Statut Membre Dernière intervention 28 mars 2008
27 mars 2008 à 16:47
bosoir

bravo

mais j'ai une question un peut defficile et j'aimerai bien avoir une reponce la dessus

comment je peut rendre ce code executable sur un compte limité c a d non

necessitant des droits administrateur .

merci
duongcanhquan Messages postés 1 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 24 octobre 2006
24 oct. 2006 à 13:58
Tu dois être un génie...
bobolechef Messages postés 65 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 19 juin 2009
10 août 2006 à 10:51
version: XP pro sp1

c'est ce que j'avais fais déjà et dans la console j'ai :
"L'erreur système 5 s'est produite. Accès refusé".
Afficher les 35 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.