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

Jak sprawdzić argumenty wiersza poleceń uruchomionego programu?

Szukam narzędzia lub metody, aby dowiedzieć się, jakie parametry wiersza poleceń zostały przekazane do programu, na przykład, gdy został on uruchomiony przez inny program (scenariusz launcher-aplikacja).

Odpowiedzi (7)

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

Możesz to zrobić również bez Process Explorera, używając usługi WMI systemu Windows. Uruchom następujące polecenie z wiersza poleceń:

WMIC path win32_process get Caption,Processid,Commandline

Jeśli chcesz zrzucić dane wyjściowe do pliku (ułatwia to nieco ich odczyt), użyj przełącznika /OUTPUT:

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

Możesz to zrobić używając Process Explorer .

Po prostu najedź myszką na proces, aby zobaczyć argumenty wiersza poleceń użyte do jego uruchomienia:

Alternatywnie możesz otworzyć właściwości procesu i sprawdzić wiersz poleceń właśnie tam:

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

Można to również osiągnąć za pomocą Menedżera zadań.

Otwórz menedżera zadań (za pomocą CTRL-SHIFT-ESC, CTRL-ALT-DELETE lub inną metodą).

W przypadku Windows 7 (i prawdopodobnie Windows XP):

  • Przejdź do zakładki “Procesy”. Następnie z menu “Widok” wybierz “Wybierz kolumny…”.
  • Zaznacz pole wyboru “Wiersz poleceń” i kliknij OK. (Być może będziesz musiał przewinąć w dół, aby ją znaleźć)

Dla Windows 8:

  • Przejdź do zakładki “Szczegóły”. Kliknij prawym przyciskiem myszy na dowolną z kolumn (np. Nazwy, PID itp.) i wybierz “Wybierz kolumny”.
  • Zaznacz pole wyboru “Wiersz poleceń” i kliknij OK. (Może być konieczne przewinięcie w dół, aby ją znaleźć)

Kolumna wierszy poleceń zostanie dodana do aktualnie wyświetlanych kolumn.

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

PowerShell na ratunek.

Znajdź:

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

I zabij jako bonus:

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 }

Możesz uruchomić go bezpośrednio z powershella lub z ps1, jeśli masz już skonfigurowany system. Szczegółowo opisuję nieograniczoną konfigurację skryptu na stronie i kill zombies with powershell jak również inne sztuczki powershell'a…

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

Poprzednie odpowiedzi są świetne w przypadku, gdy proces jest już uruchomiony i nie ma zamiaru zakończyć się wkrótce. Jeśli jednak potrzebujesz (tak jak ja) zrobić to być może z procesami uruchamianymi wiele razy i / lub szybko kończącymi się, lub być może rejestrować zdarzenia w dłuższym okresie czasu, istnieje sposób na to przy użyciu Monitor Procesów .

Zasadniczo rejestruje on różne zdarzenia w systemie, w tym przypadku możemy po prostu filtrować zdarzenie “Start procesu” i nazwę procesu, który chcemy monitorować, jak pokazano poniżej:

Następnie po prostu trzymaj monitor procesów uruchomiony i rób wszystko, co robisz, aby uruchomić proces, który chcesz rejestrować. Możesz zobaczyć w kolumnie “Szczegóły” lub “Wiersz poleceń” (zależy od tego, jak je skonfigurujesz) argumenty wiersza poleceń. Na przykład:

Oczywiście w ten sposób możesz wydobyć o wiele więcej powiązanych informacji, takich jak jaki jest katalog roboczy, jakie zmienne środowiskowe zostały przekazane procesowi, itd. Ponadto łatwo jest wyeksportować wyniki do pliku.

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

Kiedy używam CygWin, jeśli uruchamiam proces Python, to jest to przykład linii poleceń:

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

Ale Process Explorer widzi tylko główny exe:

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

(zwróć uwagę na “path: [Komunikat o błędzie otwierania procesu]” (patrz EDIT-1)). Te same wyniki dla tasklist:

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

Tak więc, jedyną sztuczką jaką znam do tej pory, jest znalezienie go poprzez powłokę CygWin Bash pgrep:

Warto o tym wiedzieć, gdyż CygWin bez problemu kohabituje w Windows, a można za jego pomocą uruchamiać wiele programów POSIX-owych i Pythonowych.

EDIT: Wydaje się, że w Windows nie trzeba mieć uprawnień administratora do listy zadań. W CygWin będziesz ich potrzebował, aby móc zobaczyć proces administratora (co wydaje mi się bardziej logiczne: pełny wiersz poleceń może mieć jakieś parametry, takie jak hasła wewnątrz), więc musimy uruchomić CygWin Bash w elevated Administrator Mode.

EDIT-1: Ten problem nie wystąpi, jeśli uruchomisz Process Explorer jako administrator. Dzięki za wskazanie, @Pacerier.

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

przejdź do run lub przejdź do start i szukaj:

tasklist -m

tasklist -svc