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

Come posso trovare gli argomenti della riga di comando di un programma in esecuzione?

Sto cercando uno strumento o un metodo per scoprire quali parametri della linea di comando sono stati passati a un programma, per esempio quando è stato eseguito da un altro programma (scenario lanciatore-applicazione).

Risposte (7)

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

Potete farlo anche senza Process Explorer, usando il servizio WMI di Windows. Esegui il seguente dal prompt dei comandi:

WMIC path win32_process get Caption,Processid,Commandline

Se vuoi scaricare l'output su un file (lo rende un po’ più facile da leggere), usa lo switch /OUTPUT:

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

Puoi farlo usando Process Explorer .

Basta passare con il mouse sopra un processo per vedere gli argomenti della riga di comando usati per avviarlo:

In alternativa, puoi aprire le proprietà del processo e ispezionare la linea di comando proprio lì:

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

Si può anche ottenere questo usando Task Manager.

Aprire il task manager (con CTRL-SHIFT-ESC, CTRL-ALT-DELETE o qualsiasi altro metodo).

Per Windows 7 (e probabilmente Windows XP):

  • Vai alla scheda “Processi”. Nel menu “Visualizza”, seleziona “Seleziona colonne…”.
  • Spunta la casella di controllo di “Linea di comando” e clicca su OK. (Potresti dover scorrere in basso per trovarla)

Per Windows 8:

  • Vai alla scheda “Dettagli”. Clicca con il tasto destro del mouse su una delle colonne (es. Nomi, PID ecc.) e seleziona “Seleziona colonne”.
  • Spunta la casella di controllo di “Linea di comando” e clicca su OK. (Potrebbe essere necessario scorrere in basso per trovarla)

Una colonna di linee di comando verrà aggiunta alle colonne attualmente visualizzate.

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

PowerShell in soccorso.

Trova:

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

E uccidi come 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 }

Puoi eseguirlo da powershell direttamente o da un ps1 se hai il tuo sistema impostato. Ho dettagliato la configurazione dello script senza restrizioni su i kill zombies with powershell così come altri trucchi powershell…

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

Le risposte precedenti sono ottime nel caso in cui il processo sia già in esecuzione e non abbia intenzione di terminare presto. Tuttavia se avete bisogno (come ho fatto io) di fare questo forse con processi che si avviano più volte e/o terminano rapidamente, o forse registrare le occorrenze in un periodo di tempo più lungo, c'è un modo per questo usando Process Monitor .

Fondamentalmente registra vari eventi nel sistema, in questo caso possiamo semplicemente filtrare l'evento “Process Start” e il nome del processo che vogliamo monitorare, come mostrato di seguito:

Poi basta mantenere il monitor di processo in esecuzione e fare qualsiasi cosa per far funzionare il processo che si vuole registrare. Puoi vedere nella colonna “Dettaglio” o nella colonna “Linea di comando” (dipende da come le configuri) gli argomenti della linea di comando. Per esempio:

Naturalmente in questo modo si possono estrarre molte più informazioni relative come qual è la directory di lavoro, quali variabili d'ambiente sono state passate al processo, ecc. Inoltre è facile esportare i risultati in un file.

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

Quando uso CygWin , se avvio un processo Python, questo è un esempio di linea di comando:

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

Ma Process Explorer vede solo l'exe principale:

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

(notare il “path: [messaggio di errore di apertura del processo]” (vedi EDIT-1)). Stessi risultati per tasklist:

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

Quindi, l'unico trucco che conosco fino ad ora, è trovarlo tramite CygWin Bash shell pgrep:

È utile sapere questo, finché CygWin coabita senza problemi in Windows, e si può usare per eseguire molti programmi POSIX e Python.

EDIT: In Windows non sembra siano necessari i privilegi di amministratore per la tasklist. In CygWin ne avrete bisogno per essere in grado di visualizzare il processo di un amministratore (ciò che mi sembra più logico: la linea di comando completa potrebbe avere alcuni parametri come le password all'interno), quindi dobbiamo eseguire il CygWin Bash in elevated Administrator Mode.

EDIT-1: Questo problema non si verifica se si esegue Process Explorer come amministratore. Grazie per la segnalazione, @Pacerier.

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

andare a run o andare a start e cercare:

tasklist -m

tasklist -svc