2012-04-22 14:36:24 +0000 2012-04-22 14:36:24 +0000
86
86

Comment puis-je trouver les arguments de la ligne de commande d'un programme en cours d'exécution ?

Je cherche un outil ou une méthode pour savoir quels paramètres de la ligne de commande ont été passés à un programme, par exemple lorsqu'il a été exécuté par un autre programme (scénario lanceur-application).

Réponses (7)

91
91
91
2012-12-15 17:29:14 +0000

Vous pouvez également le faire sans Process Explorer, en utilisant le service WMI de Windows. Exécutez ce qui suit à partir de l'invite de commande :

WMIC path win32_process get Caption,Processid,Commandline

Si vous voulez transférer la sortie dans un fichier (pour une meilleure lisibilité), utilisez le commutateur /OUTPUT :

WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
73
73
73
2012-04-22 14:39:21 +0000

Vous pouvez le faire en utilisant Process Explorer .

Il suffit de passer la souris sur un processus pour voir les arguments de la ligne de commande utilisés pour le lancer :

Alternativement, vous pouvez ouvrir les propriétés du processus et inspecter la ligne de commande juste là :

41
41
41
2015-10-03 07:28:36 +0000

On peut également y parvenir en utilisant le Task Manager.

Ouvrir le gestionnaire de tâches (par CTRL-SHIFT-ESC, CTRL-ALT-DELETE ou toute autre méthode).

Pour Windows 7 (et probablement Windows XP):

  • Allez à l'onglet “Processus”. Dans le menu “Affichage”, sélectionnez “Sélectionner les colonnes…”.
  • Cochez la case “Ligne de commande” et cliquez sur OK. (Vous devrez peut-être faire défiler la page vers le bas pour la trouver)

Pour Windows 8:

  • Allez à l'onglet “Détails”. Faites un clic droit sur l'une des colonnes (ex. Noms, PID etc.) et sélectionnez “Sélectionner les colonnes”.
  • Cochez la case “Ligne de commande” et cliquez sur OK. (Vous devrez peut-être faire défiler la page pour la trouver)

Une colonne de Lignes de commande de sera ajoutée aux colonnes actuellement affichées.

6
6
6
2014-08-07 05:46:54 +0000

PowerShell à la rescousse.

Find :

Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'}

Et kill en bonus :

Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'} | ForEach-Object { Invoke-WmiMethod -Path $_.__Path –Name Terminate }

Vous pouvez le lancer directement depuis PowerShell ou depuis un ps1 si vous avez votre configuration système. Je détaille la configuration du script sans restriction sur i kill zombies with powershell ainsi que d'autres astuces de powerhell…

5
5
5
2018-01-27 10:39:55 +0000

Les réponses précédentes sont très utiles au cas où le processus est déjà en cours et ne s'achèverait pas de sitôt. Cependant, si vous devez (comme je l'ai fait) le faire, peut-être que les processus démarrent plusieurs fois et/ou se terminent rapidement, ou peut-être que vous enregistrez les événements sur une plus longue période, il existe un moyen d'y parvenir en utilisant Process Monitor .

Fondamentalement, il enregistre divers événements dans le système, dans ce cas nous pouvons simplement filtrer l'événement “Démarrage du processus” et le nom du processus que nous voulons surveiller, comme indiqué ci-dessous :

Alors laissez le moniteur de processus fonctionner et faites tout ce que vous pouvez pour que le processus que vous voulez enregistrer fonctionne. Vous pouvez voir dans la colonne “Détail” ou dans la colonne “Ligne de commande” (selon la façon dont vous les avez configurées) les arguments de la ligne de commande. Par exemple :

Bien sûr, de cette façon, vous pouvez extraire beaucoup plus d'informations connexes telles que le répertoire de travail, les variables d'environnement qui ont été transmises au processus, etc… Il est également facile d'exporter les résultats dans un fichier.

1
1
1
2014-04-07 15:07:04 +0000

Lorsque j'utilise CygWin, si je lance un processus Python, voici un exemple de ligne de commande :

c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py

Mais Process Explorer ne voit que l'exe principal :

C:\>tasklist | find "python" /i
python2.7.exe 5740 Console 1 15.312 KB

(notez le “path : [message d'erreur d'ouverture du processus]” (voir EDIT-1)). Mêmes résultats pour tasklist :

Luis@Kenobi /cygdrive/c/
$ pgrep -f -l server.py
5740 /usr/bin/python2.7 /usr/local/bin/sudoserver.py

Donc, la seule astuce que je connaisse jusqu'à présent, est de le trouver via le shell CygWin Bash pgrep :

Il est utile de le savoir, tant que CygWin cohabite sans problème dans Windows, et que vous pouvez l'utiliser pour exécuter de nombreux programmes POSIX et Python.

EDIT : Dans Windows, vous ne semblez pas avoir besoin de privilèges d'administrateur pour la liste des tâches. Dans CygWin, vous en aurez besoin pour pouvoir visualiser le processus d'un administrateur (ce qui me semble plus logique : la ligne de commande complète pourrait avoir certains paramètres comme les mots de passe à l'intérieur), nous devons donc exécuter le CygWin Bash en elevated Administrator Mode.

EDIT-1 : ce problème ne se produira pas si vous exécutez Process Explorer en tant qu'administrateur. Merci de pointer, @Pacerier.

-3
-3
-3
2012-11-02 04:46:45 +0000

allez à run ou goto start et cherchez :

tasklist -m

tasklist -svc