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

Как узнать аргументы командной строки запущенной программы?

Я ищу инструмент или метод, чтобы узнать, какие параметры командной строки были переданы программе, например, когда она была запущена другой программой (сценарий запуска-приложения).

Ответы (7)

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

Вы можете сделать это и без проводника Process Explorer, используя службу Windows’ WMI. Выполните следующие действия из командной строки:

WMIC path win32_process get Caption,Processid,Commandline

Если вы хотите выгрузить результаты в файл (что немного облегчает чтение), используйте переключатель /OUTPUT:

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

Это можно сделать с помощью Проводник процесса .

Просто наведите курсор мыши на процесс, чтобы увидеть аргументы командной строки, использованные для его запуска:

Или же вы можете открыть свойства процесса и проверить командную строку прямо здесь:

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

Этого также можно достичь с помощью Task Manager.

Open task manager (с помощью CTRL-SHIFT-ESC, CTRL-ALT-DELETE или любого другого метода).

Для Windows 7 (и, вероятно, Windows XP)

  • Перейдите на вкладку “Процессы”. В меню “View” (Вид) выберите “Select Columns…” (Выбрать столбцы…).
  • установите флажок “Командная строка” и нажмите OK. (Возможно, вам придется прокрутить вниз, чтобы найти ее)

Для Windows 8:

  • Перейдите на вкладку “Подробности”. Щелкните правой кнопкой мыши любой из столбцов (например, Имена, PID и т.д.) и выберите “Выбрать столбцы”.
  • Установите флажок “Командная строка” и нажмите OK. (Возможно, вам придется прокрутить вниз, чтобы найти его)

Столбец “Командные строки” будет добавлен к отображаемым в настоящее время столбцам.

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

PowerShell на помощь.

Найти:

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

И убить в качестве бонуса:

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 }

Вы можете запустить его из PowerShell прямо или из ps1, если у вас есть настройка системы. Я подробно описываю настройку неограниченного скрипта на я убиваю зомби с помощью powershell , а также другие трюки powershell….

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

Предыдущие ответы отлично подойдут в том случае, если процесс уже запущен и в ближайшее время не завершится. Однако, если вам нужно (как это сделал я) сделать это, возможно, с многократным запуском процессов и/или их быстрым завершением, или, возможно, ведение журнала в течение длительного периода времени, есть способ сделать это с помощью Process Monitor .

В основном он регистрирует различные события в системе, в этом случае мы можем просто отфильтровать событие “Запуск процесса” и название процесса, за которым мы хотим наблюдать, как показано ниже:

Тогда просто держите монитор процесса в рабочем состоянии и делайте все, что вы делаете, чтобы заставить процесс, который вы хотите записать в журнал, работать. Вы можете увидеть в колонке “Подробности” или “Командная строка” (зависит от того, как вы их настраиваете) аргументы командной строки. Например:

Конечно, таким образом вы можете извлечь гораздо больше связанной информации, например, что такое рабочий каталог, какие переменные окружения были переданы процессу и т.д…. Также легко экспортировать результаты в файл.

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

При использовании CygWin, если я запускаю процесс Python, это пример командной строки:

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

Но Process Explorer видит только основной exe:

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

(обратите внимание на путь “путь: [Сообщение об ошибке при открытии процесса]” (см. EDIT-1)). Те же результаты для tasklist:

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

Так что, единственный трюк, который я знаю до сих пор, это найти его через CygWin Bash оболочки pgrep:

Полезно это знать, пока CygWin сосуществует без проблем в Windows, и вы можете использовать его для запуска многих POSIX и Python программ.

EDIT: В Windows вам, похоже, не нужны привилегии администратора для списка задач. В CygWin они понадобятся вам для просмотра процесса администратора (что кажется более логичным: полная командная строка может содержать some параметров, таких как пароли внутри), поэтому мы должны запустить CygWin Bash в повышенном Administrator Mode.

EDIT-1: Эта проблема не возникнет, если вы запустите Проводник процессов от имени администратора. Спасибо за указание, @Pacerier.

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

перейдите на run или goto start и выполните поиск:

tasklist -m

tasklist -svc

Похожие вопросы

3
19
10
28
8