Список запущенных процессов в 64-битной Windows - PullRequest
8 голосов
/ 27 октября 2009

Я пишу небольшой скрипт на python, который будет извлекать информацию из виртуальных машин Windows, с которыми я работаю.

В данный момент я могу перечислить процессы на 32-битной машине XP следующим методом:

http://code.activestate.com/recipes/305279/

Можно ли как-то определить версию запущенных окон и оправдать другой метод получения процессов на 64-битной машине, я пытаюсь получить процессы из 64-битной Vista и 64-битной Windows 7.

Есть идеи?

Ответы [ 5 ]

23 голосов
/ 13 ноября 2011

Если вы не хотите полагаться на какие-либо дополнительные установленные модули, вы можете проанализировать вывод wmic , например ::

c:\> wmic process get description,executablepath    
...
explorer.exe               C:\Windows\explorer.exe
cmd.exe                    C:\Windows\SysWOW64\cmd.exe
conhost.exe                C:\Windows\system32\conhost.exe
...

Ссылка: http://geekpedia.wordpress.com/2008/08/18/use-command-line-to-track-windows-processes/

21 голосов
/ 27 октября 2009

Есть еще один рецепт на activestate, который делает то же самое, но вместо этого использует библиотеку Performance Data Helper (PDH).

Я проверил это на моей 64-битной машине с Windows 7, и она там работает - поэтому, вероятно, одна и та же функция будет работать как на 32-битных, так и на 64-битных окнах.

Рецепт вы можете найти здесь: http://code.activestate.com/recipes/303339/

Другой метод - использование WMI. В Python есть пример использования модуля wmi :

http://timgolden.me.uk/python/wmi/cookbook.html

import wmi
c = wmi.WMI ()

for process in c.Win32_Process ():
  print process.ProcessId, process.Name
7 голосов
/ 13 мая 2013

Для аналогичных целей я использовал библиотеку psutil . Некоторые подсказки:

  • список процессов с psutil.pids() ( ссылка )
  • проверка информации о процессе с помощью process = psutil.Process(pid) ( ссылка )
  • до process.kill или process.terminate()

Установка в windows - pip выполнит установку из исходного кода (что означает компиляцию), поэтому вы, вероятно, захотите загрузить двоичную установку из https://pypi.python.org/pypi/psutil/#downloads.

6 голосов
/ 27 апреля 2017

Самый простой способ решить эту проблему - использовать библиотеку psutil в соответствии с рекомендациями Роберта Луджо:

psutil.process_iter()

Обратите внимание, что он возвращает объект-генератор, одновременно выдающий объект процесса. Например, если вам нужен список имен процессов, вы можете сделать что-то вроде:

[p.name() for p in psutil.process_iter()]
0 голосов
/ 27 октября 2009

Вы должны быть в состоянии сделать это, выставив Инструментарий управления Windows в каждой виртуальной машине. Этот инструмент дает вам доступ к куче системных данных, включая процессы, см. http://technet.microsoft.com/en-us/library/cc757287%28WS.10%29.aspx

Вы должны быть в состоянии popen одна из команд в предыдущей ссылке, чтобы получить информацию, которую вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...