Como descubro argumentos de linha de comando de um programa em execução?

78

Estou procurando uma ferramenta ou um método para descobrir quais parâmetros de linha de comando foram passados para um programa, por exemplo, quando ele foi executado por outro programa (cenário de aplicativo de inicialização).

    
por Gepard 22.04.2012 / 16:36

7 respostas

70

Você pode fazer isso usando o Process Explorer .

Passe o mouse sobre um processo para ver os argumentos da linha de comando usados para iniciá-lo:

Alternativamente,vocêpodeabriraspropriedadesdoprocessoeinspecionaralinhadecomandoali:

    
por 22.04.2012 / 16:39
84

Você pode fazer isso sem o Process Explorer, também, usando o serviço WMI do Windows. Execute o seguinte no prompt de comando:

WMIC path win32_process get Caption,Processid,Commandline

Se você quiser despejar a saída em um arquivo (facilita a leitura), use a opção / OUTPUT:

WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
    
por 15.12.2012 / 18:29
34

Também é possível conseguir isso usando Gerenciador de tarefas .

Abra o gerenciador de tarefas (por CTRL-SHIFT-ESC, CTRL-ALT-DELETE ou qualquer outro método).

Para o Windows 7 (e provavelmente o Windows XP):

  • Vá para a guia "Processos". No menu "Visualizar", selecione "Selecionar colunas ...".
  • Marque a caixa de seleção "Linha de comando" e clique em OK. (Você pode ter que rolar para baixo para encontrá-lo)

No Windows 8:

  • Vá para a guia "Detalhes". Clique com o botão direito do mouse em qualquer uma das colunas (por exemplo, Nomes, PID, etc.) e selecione "Selecionar colunas".
  • Marque a caixa de seleção "Linha de comando" e clique em OK. (Você pode ter que rolar para baixo para encontrá-lo)

Uma coluna de linhas de comando será adicionada às colunas exibidas no momento.

    
por 03.10.2015 / 09:28
5

PowerShell para o resgate.

Encontrar:

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

E mate como bônus:

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 }

Você pode executá-lo diretamente do powershell ou de um ps1 se tiver a configuração do seu sistema. Eu detalhe a configuração de script irrestrito em eu mato zumbis com powershell bem como outros truques do powershell ...

    
por 07.08.2014 / 07:46
4

As respostas anteriores são ótimas caso o processo já esteja em execução e não seja encerrado em breve. No entanto, se você precisar (como eu fiz) para fazer isso talvez com processses iniciar várias vezes e / ou terminar rapidamente, ou talvez registrar ocorrências em um longo período de tempo, há uma maneira de isso usando Monitor de processos .

Basicamente, ele registra vários eventos no sistema. Nesse caso, podemos filtrar apenas o evento "Início do processo" e o nome do processo que queremos monitorar, conforme mostrado abaixo:

Emseguida,mantenhaomonitordeprocessoemexecuçãoefaçaoquefizerparaobteroprocessoquedesejaregistraremlog.Vocêpodevernacoluna"Detalhe" ou na coluna "Linha de comando" (depende de como você os configura) os argumentos da linha de comando. Por exemplo:

Claro que desta forma você pode extrair muito mais informações relacionadas, como o diretório de trabalho, quais variáveis de ambiente foram passadas no processo, etc ... Também é fácil exportar os resultados em um arquivo.

    
por 27.01.2018 / 11:39
1

Ao usar CygWin , se eu iniciar um processo Python , este é um exemplo de linha de comando:

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

Mas o Process Explorer só vê o exe principal:

(observeocaminho:[Erroaoabriramensagemdoprocesso]" (ver EDIT-1)). Mesmos resultados para tasklist :

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

Então, o único truque que conheço até agora é encontrá-lo via shell do BgWin Bash pgrep :

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

É útil saber isso, desde que o CygWin coabite sem problemas no Windows e você possa usá-lo para executar muitos programas POSIX e Python.

EDIT: No Windows, você não parece precisar de privilégios de administrador para a lista de tarefas. No CygWin você precisará deles para visualizar o processo de um administrador (o que parece mais lógico para mim: a linha de comando completa pode ter alguns parâmetros como senhas dentro), então devemos executar o > CygWin Bash em elevado Modo de Administrador .

EDIT-1: Esse problema não ocorrerá se você executar o Process Explorer como administrador. Obrigado por apontar, @Pacerier.

    
por 07.04.2014 / 17:07
-3

vá para run ou goto start e pesquise:

tasklist -m

tasklist -svc
    
por 02.11.2012 / 05:46