77

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

7 ответов7

81

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

WMIC path win32_process get Caption,Processid,Commandline

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

WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
68

Вы можете сделать это с помощью Process Explorer.

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

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

32

Этого также можно добиться с помощью диспетчера задач.

Откройте диспетчер задач (с помощью CTRL-SHIFT-ESC, CTRL-ALT-DELETE или любым другим способом).

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

  • Перейдите на вкладку "Процессы". В меню "Вид" выберите «Выбрать столбцы ...».
  • Установите флажок "Командная строка" и нажмите ОК. (Возможно, вам придется прокрутить вниз, чтобы найти его)

Для Windows 8:

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

Столбец командных строк будет добавлен к отображаемым в данный момент столбцам.

5

PowerShell для спасения.

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 ...

3

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

По сути, он регистрирует различные события в системе, в этом случае мы можем просто отфильтровать событие "Запуск процесса" и имя процесса, который мы хотим отслеживать, как показано ниже:

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

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

1

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

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

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

Process Explorer не обнаруживает полную командную строку процесса Python

(обратите внимание на «путь: [Ошибка открытия процесса сообщения]» (см. РЕДАКТИРОВАТЬ-1)). Те же результаты для tasklist:

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

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

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

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

РЕДАКТИРОВАТЬ: В Windows вам не нужны привилегии администратора для списка задач. В CygWin они вам понадобятся, чтобы иметь возможность просматривать процесс администратора (что кажется мне более логичным: полная командная строка может иметь некоторые параметры, например пароли внутри), поэтому мы должны запустить CygWin Bash в режиме администратора с повышенными правами.

РЕДАКТИРОВАТЬ-1: Эта проблема не произойдет, если вы запустите Process Explorer от имени администратора. Спасибо, что указали, @Pacerier.

-3

перейти к run или перейти к start и поиск:

tasklist -m

tasklist -svc

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .