Il y a un certain processus que je me suis dérangé, qui est continuement lancé autour d'une minute après le tuer par l'intermédiaire de l'invite de commandes ou du gestionnaire de tâches.
Actuellement, je vais avec la méthode d'avoir un fichier batch pour boucler toutes les 15 secondes, le tuer s'il est là. Cependant, je préférerais pouvoir arrêter ce qui le lance.
Existe-t-il des méthodes pour Windows 7, pour suivre comment un processus est lancé?
Il y a une chose appelée PPID (Parent Process ID), mais il est relativement "difficile" de trouver dans Windows car ce n'est pas une colonne affichée dans Task Manager, et je ne le vois même pas pour les colonnes dans Process Explorer non plus.
Deux méthodes pour faire cela
Method 1 - WMIC Method 2 - Process Monitor
Ces deux méthodes sont assez rapides
Je vais utiliser une réponse pour trouver le PPID en utilisant WMIC à partir d'ici https://stackoverflow.com/questions/7486717/finding-parent-process-id-on-windows
Et cela rend le reste assez simple
C:\blah>wmic process get processid,parentprocessid ParentProcessId ProcessId 0 0 0 4 4 320 392 572 320 656 648 664 392 688 688 740 688 756 688 764 ... ...
Le reste est assez évident.
Supposons donc que vous souhaitiez trouver qui a lancé calc.exe
Et calc.exe que vous voyez à partir du gestionnaire de tâches, est PID 7384
C:\blah>wmic process get processid,parentprocessid | find "7384" 10896 7384 PPID PID C:\crp>
WMIC montre les associations entre PID et PPID. Ensuite, cherchez 10896 dans le Gestionnaire des tâches, (10896 est le PPID répertorié pour le PID de 7384 de calc.exe), et dans le gestionnaire de tâches, je vois que le processus avec PID de 10896 est cmd.exe qui est le processus que j'ai utilisé pour lancer calc. Exe Et en effet cmd.exe est le processus parent qui a engendré calc.exe
Vous pouvez le faire dans le moniteur de processus sysinternals.
Cliquez sur le filtre … filtrez-le dans la barre de menus et ajoutez un filtre filtrant le nom ou le chemin d'accès ou PID du processus, par exemple le nom du processus calc.exe ou un filtre pour le chemin et entrez c: \ windows \ system32 \ calc.exe
Je suis passé à utiliser le nom du processus
Effectuez OK … et fichier..capture si elle ne capture pas encore.
Double-cliquez sur le bon processus, alors, dans ce cas, chargez l'image calc.exe et une boîte de dialogue de propriétés s'affiche, cliquez sur l'onglet correct, 'processus', et vous voyez le PID et le PPID (ID du processus parent).
Et bien sûr, lorsque vous connaissez le PPID comme vous le feriez maintenant, vous pouvez le consulter dans le gestionnaire de tâches pour savoir quel processus l'a engendré
S'il s'agissait d'un processus qui fonctionnait en arrière-plan, j'utiliserais vraisemblablement l'approche Process Explorer
ou les wmic
traitement de base décrites par Barlop
ou Robert Koritnik
. Si le processus est transitoire et qu'il démarre / sort très rapidement, en laissant pas assez de temps pour effectuer les clics et les frappes nécessaires, j'utiliserais Process Monitor, tel que décrit par nixda.
Je suis un peu en retard pour cette fête, mais pour l'accomplissement:
Une autre alternative à cela (si pour une raison quelconque, vous ne voulez pas utiliser Process Monitor), c'est utiliser le suivi de processus intégré. Cela peut être activé en allant –
Panneau ctrl ….. outils administratifs …..
Politique de sécurité locale …… politique locale … politique d'audit
Vous devriez voir plusieurs options d'audit, y compris Audit Process Tracking . Activez ceci pour la catégorie Success .
Maintenant, dans Event Viewer..Windows Logs..Security , vous verrez un événement pour "création de processus" (c'est l'ID d'événement 4688) et le nom / chemin du processus en cours de création et un champ appelé ID de processus de création. Cela contient la représentation hexadélative du PID du processus qui a créé ce processus (vous pouvez le convertir facilement en utilisant calc.exe dans la vue Programmer ).
Vous pouvez rechercher ce PID (le PID de ce «processus créateur», c'est-à-dire le PPID) dans Task Manager ou la sortie de quelque chose comme tasklist / svc .
Si le processus n'est plus là, vous pouvez rechercher d'autres événements avec l'ID 4688 pour cet autre PID, dès qu'il a été créé.
Peu de suggestions possibles à essayer (dans un ordre aléatoire) dont certains peuvent ne pas donner des résultats réalisables ou déjà essayé. Je ne l'ai pas essayé moi-même, alors je ne propose que des idées que d'autres pourraient manquer. Brainstorming … Notez que la plupart de mes suggestions sont destinées à atténuer les problèmes plutôt que de le résoudre à sa cause. Ce sont les soi-disant mesures désespérées ou planifiez Z.
Avez-vous vérifié la colonne de commande dans le Gestionnaire des tâches, qu'il fournisse cette information? Je suppose que vous avez déjà essayé cela.
Si la commande est vide, j'essaye Process Explorer à partir de SysInternals et je vois si je reçois plus d'informations sur ce processus spécifique.
Si vous ne parvenez pas à trouver la racine de votre problème, vous pouvez essayer de suspendre le processus afin qu'il soit toujours là, mais cela ne fait rien. Vous pouvez le faire en utilisant Resource Monitor
Ou SysInternals Process Explorer
Un processus inconnu qui démarre vérifie probablement les processus (par nom) et s'il voit qu'il n'est pas là, il démarre. Si vous l'arrêtez, il existera afin que ce processus d'initialisation ne génère pas une nouvelle instance.
Cela peut échouer si le processus d'initialisation utilise d'autres moyens de détection de processus (communication inter-processus), mais ce type de détection de processus est beaucoup plus difficile à développer, d'où une option plus facile, gagne.
Nous pouvons traiter deux processus ici. Le premier qui vérifie l'existence du deuxième processus et le démarre (que vous tuez). Lorsque le second est en cours d'exécution, vous pouvez voir sa ligne de commande, mais en sachant que cela ne vous aide pas à ne pas commencer, et vous pouvez plutôt être après le premier processus qui lance tout. Mauvais chance.
Mais puisque vous semblez être informé par ordinateur, vous pouvez remplacer le deuxième processus (si la ligne de commande est connue) avec votre propre exécutable qui ne fait rien et se trouve juste là-bas. Il doit avoir le même nom de processus. Il pourrait également commencer et se terminer immédiatement par lui-même.
Si vous êtes vraiment bon dans le développement OS bas niveau, vous pouvez écrire un deuxième processus afin de vérifier également qui l'a démarré si cela est possible. Je ne suis pas sûr, mais l'API Windows devrait fournir de telles informations. Cela vous amènerait alors à la racine de votre problème.
Il se peut que votre processus ne soit pas engendré par d'autres processus, mais plutôt un travail de tâche planifié défini à chaque minute. Je ne sais pas si vous avez vérifié cela déjà, mais ce peut être le cas.
Une infection virale? Essayez de le détecter et de le nettoyer.