begin process at 2010 02 10 16:04:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > LSOF : LA LISTE DES HANDLES OUVERTS PAR LES PROCESSUS (COMME SOUS UNIX)

LSOF : LA LISTE DES HANDLES OUVERTS PAR LES PROCESSUS (COMME SOUS UNIX)


 Information sur la source

Note :
Aucune note
Catégorie :Système Classé sous :fichier, ouvert, handle, kernel Niveau :Initié Date de création :11/08/2006 Date de mise à jour :01/01/2007 20:49:50 Vu / téléchargé :8 648 / 490

Auteur : ShareVB

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


 Description

Ce code permet d'avoir la liste des fichiers ouverts sur le système, comme le fait la commande lsof sous Unix. Il emploie des fonctions non documentées.Il contient une classe pour obtenir cette liste.

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 (lsof nécessite les droits root sous Unix)...

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).

Il nécessite un driver, 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

il est nécessaire de mettre le driver KernelMemory.sys dans Debug\ et/ou Release\ (dans le dossier de l'exe) avant de lancer


 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.

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

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

01 janvier 2007 20:49:50 :
correction d'un bug d'énumération et pour Vista Business

 Sources du même auteur

Source avec Zip TRANSFERT D'IMAGELIST D'UN PROCESSUS À UN AUTRE
Source avec Zip ASPI : DES INFORMATIONS SUR VOS LECTEUR ET GRAVEURS DE CD ET...
Source avec Zip Source avec une capture SMBIOS/DMI : DES INFORMATIONS SUR VOTRE ORDINATEUR (MÉMOIRE,...
Source avec Zip Source avec une capture CPUID : DES INFORMATIONS SUR VOTRE PROCESSEUR (INTEL ET AMD)
Source avec Zip Source avec une capture SAVOIR À QUEL PROGRAMME APPARTIENT UNE ICONE DE LA ZONE DE N...

 Sources de la même categorie

Source avec Zip Source avec une capture [C/WIN32/WMI]SAVOIR SI UNE CLASSE COM EST INSTALLÉE par rt15
Source avec Zip Source avec une capture [C/WIN32][DRIVER] DÉTECTION DE CRÉATION OU DE SUPPRESSION DE... par deck_bsd
Source avec Zip DÉTECTION DE LANCEMENT D'APPLICATION (WIN32, REGISTERSHELLHO... par buno
Source avec Zip Source avec une capture [C/WIN32] INJECTION DE DLL 2 MÉTHODES (REMOTETHREAD PROPRE &... par deck_bsd
PRODUCER CONSUMER C (WITHIN LINUX) par PCBill

 Sources en rapport avec celle ci

FICHIER ALBUM MUSICAL par imenouuuuuuuuuche
COPIE AVEC SHFILEOPERATION par steph12358
Source avec Zip CHANGEUR DATE FICHIER (WIN32) par BruNews
Source avec Zip Source avec une capture [C/WIN32][DRIVER] DÉTECTION DE CRÉATION OU DE SUPPRESSION DE... par deck_bsd
Source avec Zip CACHER DES FICHIERS OU DOSSIER par Arnotic

Commentaires et avis

Commentaire de elsanto666 le 18/07/2007 08:38:02

Salut,

Comment faire pour que ca marche sous Vista?
Merci

Commentaire de ShareVB le 19/07/2007 23:19:09

salut,

justement, si tu es sur un compte administrateur au moment où tu exécutes ce programme, cela devrait marcher...dans tous les cas, ils faut un accès qui te permettent de charger des pilotes (droit local dans les polices de sécurité, secpol.msc si je me souviens bien)...le mieux pour tester restant un compte admin...

ShareVB

Commentaire de Cernunnos le 03/02/2009 16:43:34

Le ProcessID contenu dans la structure SYSTEM_HANDLE_INFORMATION est tronqué à 16 bits...

Y-a-t'il un moyen de contourner ce problème ???

Commentaire de ShareVB le 05/02/2009 19:46:52

salut,

Il n'y a pas de manière simple de récupérer les informations complètes. La manière "la plus simple" serait certainement de lire directement les structures de données en mémoire noyau comme le font les root kits. Cependant, cela reste relativement complexe dans la mesure où le moindre bug peut faire planter Windows...

ShareVB

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

lire un fichier [ par Toobad ] J'utilise GetFileSize pour me renvoyer la taille du fichier précédemment ouvert et ensuite j'appelle ReadFile en lui passant la valeur DWORD comme nbr Comment savoir si un fichier est ouvert par une autre application? [ par furax13 ] bonjour, je dois développer en C++ une librairie qui va, sur demande de l'utilisateur, lire un fichier sur un serveur.Ma librairie doit tester la date ShellExecute : savoir quand le programme est ouvert [ par glipper ] Bonjour,J'ouvre à l'aide de ShellExecute() un editeur de texte et lui demande de lire un fichier, mais je voudrais savoir quand il a fini de lire le f fichier xls ouvert avec windows.h [ par ancat ] Salut Es ce que je peux recuperer le contenu d'un tableau excel en vc++?J'arrive a recuperer le contenu d'un fichier texte mais avec excel je ne recup Ecrire du texte [ par angsthase ] Salut &#224; tous Je voudrais cr&#233;er un fichier texte et y ecrire quelquechose dedans, mais je n'y arrive pas. Le fichier ce cr&#233;er bien, mai Lecture d'un fichier ouvert par un autre programme. [ par OrsE ] Salut tout le monde, Voil&#224; je chercher &#224; ouvrir un fichir .doc alors que Word est l'utilise. Je sais que c'est possible parce que j'ai un l Protection d'un fichier [ par mammnon ] Bonjour &#224; tous. Petite question qui va probablement en faire rire plus d'un: Comment bloquer completement l'acces &#224; un fichier?, voir &#224 fichier deja ouvert par windowss en lecture !! [ par anonyme_man_in_this_world ] salut, est ce qu'on peut ouvrir un fichier exe deja ouvert par windows en lecture pour lire des données ?et comment ? merçi d'avance handle [ par neophenix83 ] Bonjour,dans un prog, j'ai la structure ci dessous qui est definie:typedef struct _gthread{&nbsp; HANDLE h;&nbsp; DWORD&nbsp; id;} GThread;SEulement, Obtenir un Handle sur une fichier "lock" ou en cours d'utilisation [ par SaNcOdeR ] Je cherche un moyen de r&#233;cup&#233;rer un handle sur une fichier d&#233;ja ouvert par le syst&#232;me (sous windows 2000/xp) si quelqu'un connait


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,092 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales