실행중인 프로그램의 명령 행 인수를 찾으려면 어떻게합니까?


83

예를 들어 다른 프로그램 (런처 응용 프로그램 시나리오)에 의해 실행될 때 프로그램에 전달 된 명령 줄 매개 변수를 찾는 도구 또는 방법을 찾고 있습니다.

답변:


71

프로세스 탐색기 를 사용하여이를 수행 할 수 있습니다 .

프로세스 위로 마우스를 가져 가면 시작하는 데 사용되는 명령 행 인수를 볼 수 있습니다.
여기에 이미지 설명을 입력하십시오

또는 프로세스 의 속성 을 열고 바로 명령 줄을 검사 할 수 있습니다 .
여기에 이미지 설명을 입력하십시오


2
정말 멋지다.
cutrightjm

2
불행히도 WinLicense / Themida로 보호되는 응용 프로그램에서는 작동하지 않는 것 같습니다 : oreans.com/winlicense.php 다른 아이디어가 있습니까?
Gepard

@Gepard : 작동하지 않는지 어떻게 알 수 있습니까? 실제로 응용 프로그램이 명령 줄 인수와 함께 호출 되었습니까? 어느 쪽이든 PE는 Windows를 사용하여 해당 정보를 결정합니다. 다른 응용 프로그램은 특정 응용 프로그램에 맞게 사용자 정의해야한다고 생각합니다.
Der Hochstapler

6
내 나쁜, 그것은 PE를 높이 달리지 않았다. 의도 한대로 작동합니다.
Gepard

@OliverSalzburg,이 프로그램은 어떻게 작동 했습니까? 정상적인 C 프로그램이 이것을 달성 할 수 있습니까?
Pacerier

87

Windows의 WMI 서비스를 사용하여 Process Explorer 없이도 수행 할 수 있습니다. 명령 프롬프트에서 다음을 실행하십시오.

WMIC path win32_process get Caption,Processid,Commandline

출력을 파일로 덤프하려면 (좀 더 읽기 쉽도록) / OUTPUT 스위치를 사용하십시오.

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

4
좋아, 어떻게 알았어?
Pacerier

4
@Pacerier : 솔직하게 확신하지는 않습니다 ;-) WMI 문서를 파고 그 당시에 무언가를 위해 WMI를 사용해야했기 때문에 놀았을 것이라고 생각합니다.
Andy E

3
어떤 WMI 문서를 참조하고 있습니까?
Pacerier

3
이것은 실행중인 프로세스의 명령 줄을 얻는 데 매우 유용한 명령 줄 방법이었습니다. 제 경우에는 특정 프로세스에 대해서만 출력을 얻기 위해이 부분을 약간 조정할 수있었습니다. WMIC path win32_process 여기서 "caption = 'cmd.exe'"명령 줄
chriv

1
훌륭하고 where 절은 실제로 일부 SQL 기능을 지원합니다. 예 : "name like 'cmd. %'
zhaorufei

39

작업 관리자 를 사용하여이를 달성 할 수도 있습니다 .

작업 관리자를 엽니 다 (CTRL-SHIFT-ESC, CTRL-ALT-DELETE 또는 기타 방법 사용).

Windows 7 및 Windows XP의 경우 :

  • "프로세스"탭으로 이동하십시오. "보기"메뉴에서 "열 선택 ..."을 선택하십시오.
  • "명령 줄"의 체크 박스를 체크하고 확인을 클릭하십시오. (찾으려면 아래로 스크롤해야 할 수도 있습니다)

Windows 8의 경우 :

  • "세부 사항"탭으로 이동하십시오. 열 (예 : 이름, PID 등)을 마우스 오른쪽 버튼으로 클릭하고 "열 선택"을 선택하십시오.
  • "명령 줄"의 체크 박스를 체크하고 확인을 클릭하십시오. (찾으려면 아래로 스크롤해야 할 수도 있습니다)

명령 행의 열이 현재 표시된 열에 추가됩니다.


1
@JesseBarnum을 실제로 얻지는 못합니다. 명령 행의 길이에 관계없이 항상 열을 완전히 볼 수 있도록 크기를 조정할 수 있습니까?
Jeromy Adofo

1
창이 명령 크기에 충분한 너비 인 경우에만 해당됩니다. 명령이 클래스 경로가 긴 Java 프로세스와 같은 경우 창 너비에 맞지 않습니다.
Jesse Barnum

1
고마워요. 나는 그 문제를 겪지 않았지만 내 작업 관리자를 스크롤 할 수있는 방식으로-당신에 대해 모른다 :-). 시도해 볼 샘플 프로그램을 보내 주시면 해결할 수 있다고 생각합니다.
Jeromy Adofo

6
이것은 상당히 과소 평가 된 답변입니다.
Hashim

4
Windows 작업 관리자에 대한 위의 몇 가지 의견이 있습니다. '명령 줄'열을 설정하여 실제로 긴 명령 줄을 사용하는 Java 프로세스를 표시하더라도 잘립니다. 그러나 작업 관리자에서 행을 클릭하고 전체 행을 '복사'(Ctrl-c)하여 텍스트 편집기에 붙여 넣어 아무리 길어도 전체 명령 행을 볼 수 있습니다.
JohnD

6

구조에 대한 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 속임수로 좀비를 죽이는 무제한 스크립트 설정을 자세히 설명합니다 ...


1
우와 ... 질문의 제목을 감안할 때 살인 부분은 매우 위험합니다.) Otheriwse는 매우 깔끔한 답변;)
Tom

5

이전 답변은 프로세스가 이미 실행 중이며 곧 종료되지 않을 경우에 좋습니다. 그러나 프로세스에서 여러 번 시작하거나 빠르게 종료하거나 더 긴 시간에 로그를 기록 해야하는 경우 (내가했던 것처럼) 프로세스 모니터를 사용하는 방법이 있습니다.

기본적으로 시스템에서 다양한 이벤트를 기록합니다.이 경우 "프로세스 시작"이벤트와 모니터링하려는 프로세스 이름을 필터링하면됩니다 (아래 참조).

여기에 이미지 설명을 입력하십시오

그런 다음 프로세스 모니터를 계속 실행하고 로깅하려는 프로세스를 얻으려면 모든 작업을 수행하십시오. "세부 사항"열 또는 "명령 줄"열 (명령 구성 방법에 따라 다름)에서 명령 줄 인수를 볼 수 있습니다. 예를 들면 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

물론이 방법으로 작업 디렉토리, 프로세스에 전달 된 환경 변수 등과 같은 훨씬 더 관련된 정보를 추출 할 수 있습니다. 또한 결과를 파일로 쉽게 내보낼 수 있습니다.


1

CygWin을 사용할 때 Python 프로세스를 시작하면 다음은 명령 행의 예입니다.

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

그러나 프로세스 탐색기 는 기본 exe 만 볼 수 있습니다.

프로세스 탐색기가 Python 프로세스의 전체 명령 행을 감지하지 못함

( "경로 : [프로세스 메시지를 여는 중 오류 발생"] " (EDIT-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에서 의 배쉬를 높은 관리자 모드 .

편집 -1 : 프로세스 탐색기를 관리자로 실행하면이 문제가 발생하지 않습니다. @Pacerier를 지적 해 주셔서 감사합니다.


2
관리자로 실행하면 보이지 않을 것입니다[Error opening process message]
Pacerier

당신은 맞습니다, @Pacerier. 기억하기에는 너무 명백하다 :-). 감사합니다. 게시물을 반영하여 수정했습니다.
Sopalajo de Arrierez

-3

이동 run또는 이동 start및 검색 :

tasklist -m

tasklist -svc

5
호출 명령 줄은 표시되지 않습니다. /m로드 된 모듈 (DLL 등)과 /svc각 프로세스에서 호스팅되는 서비스를 보여줍니다.
Bob
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.