Je cherche un outil ou une méthode pour savoir quels paramètres de ligne de commande ont été passés à un programme, par exemple lorsqu'il a été lancé par un autre programme (scénario lanceur-application).
Réponses
Trop de publicités?Vous pouvez également le faire sans Process Explorer, en utilisant le service WMI de Windows. Exécutez la commande suivante à partir de l'invite de commande :
WMIC path win32_process get Caption,Processid,Commandline
Si vous voulez transférer la sortie dans un fichier (ce qui la rend un peu plus facile à lire), utilisez le commutateur /OUTPUT :
WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
Vous pouvez le faire en utilisant Explorateur de processus .
Il suffit de passer la souris sur un processus pour voir les arguments de ligne de commande utilisés pour le démarrer :
Alternativement, vous pouvez ouvrir le propriétés du processus et inspecter la ligne de commande juste là :
On peut également y parvenir en utilisant Gestionnaire des tâches .
Ouvrez le gestionnaire des tâches (par CTRL-SHIFT-ESC, CTRL-ALT-DELETE ou toute autre méthode).
Pour Windows 7 (et probablement Windows XP) :
- Allez dans l'onglet "Processus". Dans le menu "View", sélectionnez "Select Columns...".
- Cochez la case "Ligne de commande" et cliquez sur OK. (Vous devrez peut-être faire défiler la page pour la trouver)
Pour Windows 8 :
- Allez dans l'onglet "Détails". Cliquez avec le bouton droit de la souris sur l'une des colonnes (par exemple, Noms, PID, etc.) et sélectionnez "Sélectionner les colonnes".
- Cochez la case de "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.
PowerShell à la rescousse.
Trouvez :
Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'}
Et tuer en prime :
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 l'exécuter depuis powershell directement ou depuis un ps1 si vous avez configuré votre système. Je détaille la configuration sans restriction de script sur je tue des zombies avec powershell ainsi que d'autres astuces powershell...
Les réponses précédentes sont excellentes dans le cas où le processus est déjà en cours et ne va pas s'arrêter de sitôt. Cependant, si vous avez besoin (comme je l'ai fait) de faire cela peut-être avec des processus qui démarrent plusieurs fois et/ou se terminent rapidement, ou peut-être de consigner les occurrences dans une période de temps plus longue, il y a un moyen de le faire en utilisant Moniteur de processus .
Dans ce cas, nous pouvons simplement filtrer l'événement "Process Start" et le nom du processus que nous voulons surveiller, comme indiqué ci-dessous :
Ensuite, gardez le moniteur de processus en marche et faites tout ce que vous pouvez pour que le processus que vous voulez enregistrer soit en marche. Vous pouvez voir dans la colonne "Detail" ou dans la colonne "Command line" (selon la façon dont vous les configurez) 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é passées au processus, etc... Il est également facile d'exporter les résultats dans un fichier.
- Réponses précédentes
- Plus de réponses