begin process at 2010 09 06 04:04:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > COMMENT CONTRÔLER TOTALEMENT LES PROCESSUS D'UN PC DISTANT (LISTE, KILL, THREADS, TOUT CE QUE VOUS VOULEZ...)

COMMENT CONTRÔLER TOTALEMENT LES PROCESSUS D'UN PC DISTANT (LISTE, KILL, THREADS, TOUT CE QUE VOUS VOULEZ...)


 Information sur la source

Note :
Aucune note
Catégorie :Réseau & Internet Source .NET ( DotNet ) Classé sous :Processus, kill, WMI Niveau :Expert Date de création :28/03/2009 Date de mise à jour :28/03/2009 10:21:02 Vu / téléchargé :7 451 / 1 005

Auteur : violent_ken

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


 Description

Cliquez pour voir la capture en taille normale
Bonjour,

Voilà une source qui permet de contrôler complètement les processus d'un PC distant !

Je sais qu'il existe WMI pour gérer les processus à distance, mais WMI est pas franchement convaincant car :
- il nécessite d'être installé sur les deux machines
- pas très rapide (en tout cas pour l'utilisation spécifique que l'on en fait en listant les processus)
- très très limité (impossible de faire autre chose que la liste des processus/modules, tuer/créer).



Bref voici une solution qui permet de contrôler ENTIEREMENT les processus du PC distant. Absolument tout est possible : kill, resume, suspend, priorité, affinité, liste des threads/handles, changement des privilèges, déchargement de module/handle, le tout à distance... Donc bien mieux que WMI lol :-p


Voici le fonctionnement (simple) :
- on fait tourner un 'serveur' sur la machine distante (certes la dénomination est un poil inversée ^^)
- on fait tourner un 'client' sur la machine qui contrôle les processus de la machine distante
- on relie tout çà par socket
- le client envoie des requêtes au serveur, et le serveur procède aux actions en fonction de la requête (kill, priorité, affinité, création de processus...) ou bien renvoie des informations (liste de processus, modules, threads...) au client.

Bref c'est très très très simple mais çà permet de faire ce que l'on veut sur la machine distante.
Bien sur il est nécessaire de lancer le serveur sur la machine distante, chose qui était inutile avec WMI... Revers de la médaille !


D'un point de vue programmation, ce code est intéressant pour :
- utilisation asynchrone des sockets
- utilisation des delegates/invoke plutôt que RaiseEvent
- utilisation de la serialization pour "convertir" un objet en byte array et inversement (et donc envoyer une instance de classe par le réseau).


Voilà comment tester le projet :
- lancer la solution (VS 2008, à convertir en 2005 si vous avez pas 2008)
- compiler le tout en release
- lancer le fichier server.exe sur une machine et client.exe sur une autre (ou bien sur la même !) (exe générés dans le dossier REALEASE)
- configurer l'adresse locale du serveur et cliquer sur connecter
- configurer l'adresse du client et connecter
- et voilà connection établie et dialogue possible.



Sinon, je n'ai pas implémenté toutes les fonctions, citées en haut, dans l'exemple fourni en *.zip. Pour la démo, il n'est que possible de lister les processus, les tuer, les suspendre, les reprendre, et lancer un processus à distance (explorer.exe dans l'exemple).

Par contre toutes les fonctions de gestion des processus sont disponibles dans la dll CoreFunc.dll, il suffit de changer la classe cSocketData.vb en l'adaptant pour pouvoir utiliser d'autres fonctions (exemple : ajouter des OrderType ...etc.). Le but n'est pas ici d'être exhaustif mais de montrer un principe de fonctionnement.

Cette dll a été codée par moi-même, mais je ne fournis pas le code source dans le fichier zip pour éviter de l'alourdir. Par contre, il est disponible en téléchargement en SVN ici : http://sourceforge.net/projects/yaprocmon, ou bien dans la source "Yet Another Process Monitor".



Le but de cette source est de recevoir vos critiques/suggestions/idées/remarques : je vais en effet ajouter dans mon projet "Yet Another Process Monitor" le monitoring des processus distants via l'architecture client/serveur présentée ici en démo, en plus du monitoring local et via WMI, et comme je ne suis pas super familier avec la programmation réseau, c'est probablement pas super propre ce que j'ai fait donc corrigez moi svp !

@+

Source

  • ' ziiip
  • ' http://sourceforge.net/projects/yaprocmon pour le projet complet !
' ziiip

' http://sourceforge.net/projects/yaprocmon pour le projet complet !

 Conclusion

Svp tous les commentaires sont les bienvenus !

Dernière chose : j'ai pas géré toutes les erreurs possible au niveau du réseau (déconnections, IP foirées, connections doubles...), c'est fait exprès.

@+

 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


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) UTILITAIRE DE SANITIZATION DES DISQUES DURS/FICHIERS (SUPPRE...
Source avec Zip Source avec une capture Source .NET (Dotnet) SIMPLE SHUTDOWN SCHEDULER : ARRÊTS PLANIFIÉS (LOCAL OU REMOT...
Source avec Zip Source .NET (Dotnet) COMMENT DÉMARRER UN PROCESSUS SUR PC DISTANT DE MANIÈRE CACH...
Source avec Zip Source avec une capture Source .NET (Dotnet) YET ANOTHER (REMOTE) PROCESS MONITOR
Source avec Zip Source avec une capture Source .NET (Dotnet) COMMENT DÉTECTER LES PROCESSUS CACHÉS (VIRUS, ROOTKITS...) +...

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) CHATIRC - UN CLIENT IRC SIMPLE par raffika
Source avec Zip Source avec une capture GOOGLE EARTH IN VB6 par ZaidMarkabi
Source avec Zip Source .NET (Dotnet) VB10! COLOMB TEAM GORILLA BROWSER par Ultrabytes
Source avec Zip Source avec une capture Source .NET (Dotnet) COMMUNICATION TCP CLIENT-SERVEUR ASYNCHRONE par anadom
Source avec Zip Source avec une capture Source .NET (Dotnet) CLIENT IRC QUI LIT À VOIX HAUTE par pigedanslelac

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture AFFICHAGE DÉTAILLÉ DES PROCESSUS EN COURS D'EXÉCUTION SUR UN... par hackoo
Source avec Zip Source avec une capture WMI, GESTION D'UNE MACHINE (LOCALE OU DISTANTE) par zesamoth
MES TEST ET MES RECHERCHES SUR WMI, PROCESSUS ET INTERNET par l0r3nz1
Source avec Zip EXCEL PROCESS KILLER par mabrouklepoux
Source .NET (Dotnet) FERMETURE D'UN PROCESSUS PRÉCIS (KILL PROCESS) par capuccino_fr

Commentaires et avis

Commentaire de violent_ken le 28/03/2009 01:05:59

Code désactivé ? Gné ?

Commentaire de violent_ken le 28/03/2009 01:18:48

Ah ok j'ai vu les messages de Renfield sur d'autres sources :


"Lorsque tu ajoutes une source sur le site, il te faut confirmer son ajout pour qu'elle soit visible par tous...

Ajout => Description + Fichiers + etc. => Prévisualisation => Mot clés => Terminé"



Juste pour info : après la prévisualisation, je n'ai pas eu l'habituel écran invitant à rentrer les mots clés et à valider (ch'ui retombé directement sur la page 'code désactivé').

Bug du site je pense.

@+

Commentaire de Bacterius le 28/03/2009 12:58:31

Bon je suis Delphiste, mais je tiens juste à dire un truc : tu dis que WMI doit être installé sur les deux machines. Ok, mais ton application aussi ^^ il faut un client sur la machine distante. Concept très connu, et c'est généralement le premier réflexe qu'on a. Or, il existe des moyens de contrôler un PC à distance sans client :) Bien sûr moi je n'en suis pas capable, mais il y a moyen de, par exemple, utiliser des petits trous dans une application résidente de Windows, et de s'en servir pour executer telle ou telle tâche ... M'enfin c'est hors de nos compétences à nous 2 je pense (même si je te connais pas ^^).
Enfin cette source a toujours le mérite de montrer comment gérer, lister, tuer les processus à l'aide des API :)
Voilà, donc cette source est sympa dans l'idée :)

Cordialement, Bacterius !

Commentaire de ghuysmans99 le 28/03/2009 13:09:54

Pas très pratique tout ça ...
Va-t-en installer .NET 3 sur un serveur !
Sinon pour lister, tuer, créer des process y'a aussi SysInternals !

Commentaire de violent_ken le 28/03/2009 13:17:22

Salut,

Héhé oui, WMI doit être installé, tout comme mon application "serveur", c'est sur ;-)
Mais l'avantage c'est que le "serveur" doit être lancé sans installation, et inutile d'avoir tous les droits pour son lancement. Quoi de plus simple : installé WMI ou bien lancer un exe ?

En tout cas, il n'est pas souhaitable de lancer une application distante sans avoir lancé le serveur au préalable. Une application de monitoring n'a pas pour vocation de s'introduire furtivement sur un PC distant ;-) D'ailleurs comme tu dis c'est hors de mes compétences également ^^


Sinon la gestion des processus n'est pas détaillée dans cette source (cf la dll), l'intérêt est surtout la gestion des sockets, des delegate et de la serialization.

@+

Commentaire de violent_ken le 28/03/2009 13:21:39

ghuysmans99 -> certes il faut installer le framework, mais il me semble qu'il est nativement présent avec Vista. D'ailleurs le 3.5 est utilisé, mais le 2.0 suffit.

Sinon pour SysInternals, aucune des outils ne permet pas de toucher les processus à distance !

@+

Commentaire de violent_ken le 28/03/2009 13:22:25

"Sinon pour SysInternals, aucune des outils ne permet pas de toucher les processus à distance !"

Fallait lire :

"Sinon pour SysInternals, aucun des outils ne permet de toucher les processus à distance !"

@+

Commentaire de ghuysmans99 le 28/03/2009 13:35:52

PsExec, PsList, PsKill, PsSuspend, ...
http://technet.microsoft.com/en-us/sysinternals/cb56073f-62a3-4ed8-9dd6-40c84cb9e2f5.aspx
A mon avis tu t'es emmêlé les pinceaux !

Commentaire de Bacterius le 28/03/2009 13:37:48

Tout ça dans notre header PSAPI chez nous les Delphistes :)

Cordialement, Bacterius !

Commentaire de ghuysmans99 le 28/03/2009 13:42:42

La DLL psapi.dll pourrait très bien être utilisée en C++ ou en VB ...

Commentaire de Bacterius le 28/03/2009 13:44:25

Effectivement, je n'ai pas dit le contraire, je crois même que vous avez déjà un header PSAPI pour C et VB ^^

Cordialement, Bacterius !

Commentaire de violent_ken le 28/03/2009 14:06:51

PsExec, PsList, PsKill, PsSuspend permettent respectivement d'exécuter, lister, tuer et suspendre un processus à distance :-)

Il a fallut que je mette les mêmes exemples dans la démo dans le fichier *.zip, mais quand je parle de contrôle à distance je parle en réalité de toutes les fonctions moins triviales qui ne sont pas proposées par les fonctions de l'API Windows et que les PsTools ne proposent bien évidemment pas :
- affinité
- lister, tuer, priorité, affinité des threads
- lister, fermer handles
- charger/décharger un module
- gestion des privilèges
- ...

Bref, l'intérêt est de faire un Process Explorer pour les processus distants, avec toutes les fonctionnalités avancées dont il dispose, et pas de proposer les fonction de psapi avec une architecture client/serveur inutile ^^

@+

Commentaire de violent_ken le 28/03/2009 14:08:05

Juste pour préciser : quand je dis "qui ne sont pas proposées par les fonctions de l'API Windows", je parle bien sur pour les processus distants. Désolé du double message.

@+

Commentaire de skantagevich le 10/04/2009 05:01:10

dsl violent_ken jpeu savoire si tn petit programme se connéct a a un pc distant sans ke le client distant entre sans ip et le valide(jve dire ke tn programme s 'xécute aprés ke le client distant lance l application etke son son ip s'envoi a twa et la socket se lance automatiquement !!!!!!
et merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

kill de processus excel [ par jollyJumper ] bonjour,je recherche une méthode vb pour tuer un processus Excel en coursen fait quand je quitte prématurément mon application vb alors qu'elle est en Kill processus Excel [ par mllezozo ] Hello tout le monde !Voilà, j'ai un énorme souci !!!!J'ouvre un fichier Excel existant que je continue de remplir mais du fait que j'utilise les propr [?]KILL Processus excel.exe ??? [ par Steph73 ] Bonjour,mon appli met à jours des tableaux sous excel. Mais si le fichier en question est déjà ouvert, ça plante! Je souhaite donc KILLER tout process Kill un process bien definie [ par ImmortalPC ] Salut,D&#233;j&#224; sachez que je connais tr&#232;s peu le VB.Ma question est comment tuer un processus bien definie?Pour l'exemple le processus sera WMI liste processus [ par flopad ] Salut!!Comment est ce que je peux faire pour lister les processus en cours sur une machine distante..??Merci d'avance. Kill un processus d'une machine en reseau [ par alias666 ] Bonjour,Je voudrais savoir si il existe un moyen pour lister &amp; killer les processus d'une machine connectée à un reseau local. Actuellement j'ai t VBS et Droits WMI [ par trafalgar ] Bonjour,&nbsp;&nbsp;&nbsp;&nbsp;Je suis en stage au sein d'un lyc&#233;e. Et j'essaye de mettre en place une interface vb&nbsp;Qui lance&nbsp;un scrip VBS, accés distant et Droits WMI [ par trafalgar ] <TABLE id=ctl00_Main_UCContentForum_ctl00_DGMsg style="BORDER-RIGHT: silver 1px solid; BORDER-TOP: silver 1px solid; BORDER-LEFT: silver 1px solid; WI inkillable via le kill processus [ par kakenette ] Bonjour !Voila je ferrai de ce message pas une question mais plutot un sujet de discution qui aurai comme theme : Comment Empecher la fermeture d'une Kill processus W2K [ par gradenko80 ] Bonjour,Je lance une application.exe via un programme VB6. J'aimerais lorsque je ferme ce programme, fermer l'application que j'ai lanc&#233; via le s


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

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