2014-04-14 3 views
1

Windows 8.1에서 이름과 PID를 포함하여 메모리에있는 프로세스 목록을 가져오고 싶습니다.Python을 사용하여 Windows 8.1 프로세스 목록 가져 오기

import subprocess 
import os 

cmd = "WMIC PROCESS get Caption,ProcessId" 
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) 
for line in proc.stdout: 
    # Additional logic here 

루프가 실행되지 않습니다 :

여기 내 코드입니다. 이 코드는 이전 버전의 Windows 8에서 작동했습니다. 누군가가 추천 할 수있는 다른 접근 방식이 있습니까?

+0

실제 명령 줄은 계속 작동합니까? – kindall

+0

예. 커맨드 라인 (cmd)에서 "WMIC PROCESS get Caption, ProcessId"를 실행할 수 있으며, 원하는 것을 정확히 제공합니다. – Beebunny

답변

2

성가신 subprocess 대신 플랫폼이 다른 플랫폼 psutil을 사용할 수 있습니다. psutil.process_iter() 당신은 당신이 그것을 반환 Process 객체 싶은 거의 아무것도 할 수 있도록 범용 사용

(등, 관심있는 사람을 필터링, 이름, PID를 얻을 수)

일예

for proc in psutil.process_iter(): 
    print proc.pid, proc.name 
+0

이것은 훌륭한 해결책이므로 답변으로 표시하고 있습니다. – Beebunny

1

Shx2 귀하의 회신에 감사드립니다. 귀하의 솔루션이 멀티 플랫폼 지원에 더 좋을 때, Windows 8.1 만 실행 중이므로 여기에 나와있는 해결책이 있습니다.

from win32com.client import GetObject 

Wmi = GetObject('winmgmts:') 
processes = Wmi.InstancesOf('Win32_Process') 

# Get the Explorer process 
explorer = Wmi.ExecQuery('select * from Win32_Process where Name="explorer.exe"') 

# Grab its Pid 
processId = explorer[0].Properties_('ProcessId').Value 
관련 문제