Как узнать аргументы командной строки запущенной программы?
Я ищу инструмент или метод, чтобы узнать, какие параметры командной строки были переданы программе, например, когда она была запущена другой программой (сценарий запуска-приложения).
Я ищу инструмент или метод, чтобы узнать, какие параметры командной строки были переданы программе, например, когда она была запущена другой программой (сценарий запуска-приложения).
Вы можете сделать это и без проводника 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
Это можно сделать с помощью Проводник процесса .
Просто наведите курсор мыши на процесс, чтобы увидеть аргументы командной строки, использованные для его запуска:
Или же вы можете открыть свойства процесса и проверить командную строку прямо здесь:
Этого также можно достичь с помощью Task Manager.
Open task manager (с помощью CTRL-SHIFT-ESC, CTRL-ALT-DELETE или любого другого метода).
Для Windows 7 (и, вероятно, Windows XP)
Для Windows 8:
Столбец “Командные строки” будет добавлен к отображаемым в настоящее время столбцам.
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….
Предыдущие ответы отлично подойдут в том случае, если процесс уже запущен и в ближайшее время не завершится. Однако, если вам нужно (как это сделал я) сделать это, возможно, с многократным запуском процессов и/или их быстрым завершением, или, возможно, ведение журнала в течение длительного периода времени, есть способ сделать это с помощью Process Monitor .
В основном он регистрирует различные события в системе, в этом случае мы можем просто отфильтровать событие “Запуск процесса” и название процесса, за которым мы хотим наблюдать, как показано ниже:
Тогда просто держите монитор процесса в рабочем состоянии и делайте все, что вы делаете, чтобы заставить процесс, который вы хотите записать в журнал, работать. Вы можете увидеть в колонке “Подробности” или “Командная строка” (зависит от того, как вы их настраиваете) аргументы командной строки. Например:
Конечно, таким образом вы можете извлечь гораздо больше связанной информации, например, что такое рабочий каталог, какие переменные окружения были переданы процессу и т.д…. Также легко экспортировать результаты в файл.
При использовании 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.