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

¿Cómo puedo averiguar los argumentos de la línea de comandos de un programa en ejecución?

Estoy buscando una herramienta o método para averiguar qué parámetros de la línea de comandos se han pasado a un programa, por ejemplo, cuando fue ejecutado por otro programa (escenario lanzador-aplicación).

Respuestas (7)

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

También puede hacerlo sin el Explorador de Procesos, utilizando el servicio WMI de Windows. Ejecute lo siguiente desde el símbolo del sistema:

WMIC path win32_process get Caption,Processid,Commandline

Si desea volcar la salida a un archivo (hace que sea un poco más fácil de leer), utilice el interruptor /OUTPUT:

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

Puede hacerlo utilizando el Explorador de Procesos .

Basta con pasar el ratón por encima de un proceso para ver los argumentos de la línea de comandos utilizados para iniciarlo:

Alternativamente, puede abrir las propiedades del proceso e inspeccionar la línea de comandos allí mismo:

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

También se puede conseguir utilizando el Administrador de tareas.

Abra el administrador de tareas (con CTRL-SHIFT-ESC, CTRL-ALT-DELETE o cualquier otro método).

Para Windows 7 (y probablemente Windows XP):

  • Vaya a la pestaña “Procesos”. En el menú “Ver”, seleccione “Seleccionar columnas…”.
  • Marque la casilla de “Línea de comandos” y haga clic en Aceptar. (Puede que tenga que desplazarse hacia abajo para encontrarla)

Para Windows 8:

  • Vaya a la pestaña “Detalles”. Haga clic con el botón derecho en cualquiera de las columnas (por ejemplo, Nombres, PID, etc.) y seleccione “Seleccionar columnas”.
  • Marque la casilla de “Línea de comandos” y haga clic en Aceptar. (Es posible que tenga que desplazarse hacia abajo para encontrarla)

Se añadirá una columna de Líneas de Comando a las columnas actualmente mostradas.

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

PowerShell al rescate.

Encuentra:

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

Y mata como extra:

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 }

Puedes ejecutarlo desde powershell directamente o desde un ps1 si tienes tu sistema configurado. Detallo la configuración del script sin restricciones en i kill zombies with powershell así como otros trucos de powershell…

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

Las respuestas anteriores son geniales en el caso de que el proceso ya se esté ejecutando y no vaya a terminar pronto. Sin embargo, si necesitas (como yo) hacer esto tal vez con procesos que se inician varias veces y/o terminan rápidamente, o tal vez registrar las ocurrencias en un período de tiempo más largo, hay una manera de esto usando Process Monitor .

Básicamente registra varios eventos en el sistema, en este caso sólo podemos filtrar el evento “Inicio de Proceso” y el nombre del proceso que queremos monitorear, como se muestra a continuación:

Luego sólo hay que mantener el monitor de procesos en funcionamiento y hacer lo que sea para que se ejecute el proceso que queremos registrar. Puedes ver en la columna “Detalle” o en la columna “Línea de comandos” (depende de cómo los configures) los argumentos de la línea de comandos. Por ejemplo:

Por supuesto que de esta forma puedes extraer mucha más información relacionada como cuál es el directorio de trabajo, qué variables de entorno se han pasado al proceso, etc. También es fácil exportar los resultados a un archivo.

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

Cuando uso CygWin , si inicio un proceso Python, este es un ejemplo de línea de comandos:

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

Pero el Explorador de Procesos sólo ve el exe principal:

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

(nótese la “ruta: [Mensaje de error al abrir el proceso]” (ver EDIT-1)). Los mismos resultados para tasklist:

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

Así que, el único truco que conozco hasta ahora, es encontrarlo a través de CygWin Bash shell pgrep:

Es útil saber esto, ya que CygWin cohabita sin problemas en Windows, y se puede utilizar para ejecutar muchos programas POSIX y Python.

EDIT: En Windows parece que no se necesitan privilegios de administrador para la lista de tareas. En CygWin los necesitarás para poder ver el proceso de un administrador (lo que me parece más lógico: la línea de comandos completa podría tener algunos parámetros como contraseñas dentro), así que debemos ejecutar el CygWin Bash en elevado Modo Administrador.

EDIT-1: Este problema no ocurrirá si se ejecuta Process Explorer como administrador. Gracias por señalarlo, @Pacerier.

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

ir a run o ir a start y buscar:

tasklist -m

tasklist -svc