当前位置: 首页 > ai >正文

python 管理windows客户端_Python管理Windows进程

用python获得正在的运行的windows进程的有几种方式:

方式一

通过 PyWin32包对Windows进行处理。

可以通过这个获取系统信息,但仅限于windows系统。

import win32com.client

wmi=win32com.client.GetObject('winmgmts:')

for p in wmi.InstancesOf('win32_process'):

print p.Name, p.Properties_('ProcessId'), \

int(p.Properties_('UserModeTime').Value)+int(p.Properties_('KernelModeTime').Value)

children=wmi.ExecQuery('Select * from win32_process where ParentProcessId=%s' %p.Properties_('ProcessId'))

for child in children:

print '\t',child.Name,child.Properties_('ProcessId'), \

int(child.Properties_('UserModeTime').Value)+int(child.Properties_('KernelModeTime').Value)

运行结果:

System Idle Process 0 11055150937500

System Idle Process 0 11055150937500

System 4 14906718750

System 4 14906718750

smss.exe 864 937500

smss.exe 864 937500

csrss.exe 916 1752187500

winlogon.exe 940 72812500

csrss.exe 916 1752187500

winlogon.exe 940 72812500

services.exe 1024 324236406250

lsass.exe 1044 10099062500

services.exe 1024 324236406250

svchost.exe 1236 35468750

svchost.exe 1304 6174687500

svchost.exe 1480 198943593750

svchost.exe 1524 35156250

svchost.exe 1636 1412656250

svchost.exe 1688 494843750

spoolsv.exe 1860 45312500

DhMachineSvc.exe 2040 23593750

jqs.exe 200 11605000000

NTFSWatcher.exe 248 15625000

OmniAddrService.exe 268 86406250

pcas.exe 396 172187500

nssm.exe 696 2968750

TeamViewer_Service.exe 772 172343750

winvnc4.exe 844 78750000

svchost.exe 880 151718750

alg.exe 3208 56093750

lsass.exe 1044 10099062500

svchost.exe 1236 35468750

wmiprvse.exe 5184 2500000

svchost.exe 1304 6174687500

svchost.exe 1480 198943125000

svchost.exe 1524 35156250

svchost.exe 1636 1412656250

svchost.exe 1688 494843750

spoolsv.exe 1860 45312500

DhMachineSvc.exe 2040 23593750

jqs.exe 200 11605000000

GoogleUpdate.exe 208 105312500

NTFSWatcher.exe 248 15625000

OmniAddrService.exe 268 86406250

pcas.exe 396 172187500

nssm.exe 696 2968750

salt-minion.exe 716 79062500

salt-minion.exe 716 79062500

TeamViewer_Service.exe 772 172343750

winvnc4.exe 844 78750000

svchost.exe 880 151718750

explorer.exe 1452 7501250000

TSVNCache.exe 2496 114531250

ctfmon.exe 2540 82343750

chrome.exe 2556 25053125000

RocketDock.exe 2564 411406250

Xshell.exe 5200 12957656250

mstsc.exe 8468 227500000

iexplore.exe 7672 13281250

cmd.exe 9404 312500

sublime_text.exe 8920 131093750

notepad.exe 2248 1718750

TSVNCache.exe 2496 114531250

ctfmon.exe 2540 82343750

chrome.exe 2556 25053125000

chrome.exe 3880 24531250

chrome.exe 3872 52500000

chrome.exe 2020 331093750

chrome.exe 1028 35937500

chrome.exe 196 37187500

chrome.exe 184 55625000

chrome.exe 2736 37656250

chrome.exe 2752 1755781250

chrome.exe 2772 83281250

chrome.exe 2976 258125000

SogouFlash.exe 3580 640468750

SogouCloud.exe 3488 115625000

SGImeGuard.exe 4300 24218750

chrome.exe 3700 40312500

chrome.exe 9148 3741406250

chrome.exe 8496 7201250000

chrome.exe 6840 200312500

SogouSmartInfo.exe 9852 468750

RocketDock.exe 2564 411406250

alg.exe 3208 56093750

chrome.exe 3880 24531250

chrome.exe 3872 52500000

chrome.exe 2020 331093750

chrome.exe 1028 35937500

chrome.exe 196 37187500

chrome.exe 184 55625000

chrome.exe 2736 37656250

chrome.exe 2752 1755781250

chrome.exe 2772 83281250

chrome.exe 2976 258125000

TaobaoProtect.exe 3772 27562812500

conime.exe 388 59218750

SogouFlash.exe 3580 640468750

SogouCloud.exe 3488 115625000

SGImeGuard.exe 4300 24218750

Xshell.exe 5200 12957656250

chrome.exe 3700 40312500

aliwssv.exe 7160 46875000

TM.exe 9144 2396250000

chrome.exe 9148 3741250000

Alipaybsm.exe 9536 73593750

chrome.exe 8496 7199843750

mstsc.exe 8468 227500000

iexplore.exe 7672 13281250

iexplore.exe 7256 148593750

iexplore.exe 7256 148437500

cmd.exe 9404 312500

python.exe 9048 1875000

sublime_text.exe 8920 127968750

plugin_host.exe 9840 32031250

plugin_host.exe 9840 30625000

cmd.exe 6384 156250

python.exe 9048 1875000

notepad.exe 2248 1718750

chrome.exe 6840 200312500

SogouSmartInfo.exe 9852 468750

cmd.exe 6384 156250

python.exe 9584 10312500

python.exe 9584 1093750

wmiprvse.exe 5184 781250

上面的从左到右分别是 进程名,pid,cpu的运行时间

方式二:

import win32pdh, string, win32api

def procids():

#each instance is a process, you can have multiple processes w/same name

junk, instances = win32pdh.EnumObjectItems(None,None,'process', win32pdh.PERF_DETAIL_WIZARD)

proc_ids=[]

proc_dict={}

for instance in instances:

if instance in proc_dict:

proc_dict[instance] = proc_dict[instance] + 1

else:

proc_dict[instance]=0

for instance, max_instances in proc_dict.items():

for inum in xrange(max_instances+1):

hq = win32pdh.OpenQuery() # initializes the query handle

path = win32pdh.MakeCounterPath( (None,'process',instance, None, inum,'ID Process') )

counter_handle=win32pdh.AddCounter(hq, path)

win32pdh.CollectQueryData(hq) #collects data for the counter

type, val = win32pdh.GetFormattedCounterValue(counter_handle, win32pdh.PDH_FMT_LONG)

proc_ids.append((instance,str(val)))

win32pdh.CloseQuery(hq)

proc_ids.sort()

return proc_ids

print procids()

运行结果:

[(u'Alipaybsm', '9536'), (u'DhMachineSvc', '2040'), (u'GoogleUpdate', '208'), (u'Idle', '0'), (u'NTFSWatcher', '248'), (u'OmniAddrService', '268'), (u'RocketDock', '2564'), (u'SGImeGuard', '4300'), (u'SogouCloud', '3488'), (u'SogouFlash', '3580'), (u'SogouSmartInfo', '9852'), (u'System', '4'), (u'TM', '9144'), (u'TSVNCache', '2496'), (u'TaobaoProtect', '3772'), (u'TeamViewer_Service', '772'), (u'Xshell', '5200'), (u'_Total', '0'), (u'alg', '3208'), (u'aliwssv', '7160'), (u'chrome', '1028'), (u'chrome', '184'), (u'chrome', '196'), (u'chrome', '2020'), (u'chrome', '2556'), (u'chrome', '2736'), (u'chrome', '2752'), (u'chrome', '2772'), (u'chrome', '2976'), (u'chrome', '3700'), (u'chrome', '3872'), (u'chrome', '3880'), (u'chrome', '6840'), (u'chrome', '8496'), (u'chrome', '9148'), (u'cmd', '9404'), (u'cmd', '9776'), (u'conime', '388'), (u'csrss', '916'), (u'ctfmon', '2540'), (u'explorer', '1452'), (u'iexplore', '7256'), (u'iexplore', '7672'), (u'jqs', '200'), (u'lsass', '1044'), (u'mstsc', '8468'), (u'notepad', '2248'), (u'nssm', '696'), (u'pcas', '396'), (u'plugin_host', '9840'), (u'python', '3540'), (u'python', '9048'), (u'salt-minion', '716'), (u'services', '1024'), (u'smss', '864'), (u'spoolsv', '1860'), (u'sublime_text', '8920'), (u'svchost', '1236'), (u'svchost', '1304'), (u'svchost', '1480'), (u'svchost', '1524'), (u'svchost', '1636'), (u'svchost', '1688'), (u'svchost', '880'), (u'winlogon', '940'), (u'winvnc4', '844')]

[Finished in 0.3s]

获得 一个进程名,进程Id元组的列表

方式三:

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

"""

Enumerates active processes as seen under windows Task Manager on Win NT/2k/XP using PSAPI.dll

(new api for processes) and using ctypes.Use it as you please.

Based on information from http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q175030&ID=KB;EN-US;Q175030

By Eric Koome

email ekoome@yahoo.com

license GPL

"""

from ctypes import *

#PSAPI.DLL

psapi = windll.psapi

#Kernel32.DLL

kernel = windll.kernel32

def EnumProcesses():

arr = c_ulong * 256

lpidProcess= arr()

cb = sizeof(lpidProcess)

cbNeeded = c_ulong()

hModule = c_ulong()

count = c_ulong()

modname = c_buffer(30)

PROCESS_QUERY_INFORMATION = 0x0400

PROCESS_VM_READ = 0x0010

#Call Enumprocesses to get hold of process id's

psapi.EnumProcesses(byref(lpidProcess),

cb,

byref(cbNeeded))

#Number of processes returned

nReturned = cbNeeded.value/sizeof(c_ulong())

pidProcess = [i for i in lpidProcess][:nReturned]

for pid in pidProcess:

#Get handle to the process based on PID

hProcess = kernel.OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,

False, pid)

if hProcess:

psapi.EnumProcessModules(hProcess, byref(hModule), sizeof(hModule), byref(count))

psapi.GetModuleBaseNameA(hProcess, hModule.value, modname, sizeof(modname))

print "".join([ i for i in modname if i != '\x00'])

#-- Clean up

for i in range(modname._length_):

modname[i]='\x00'

kernel.CloseHandle(hProcess)

if __name__ == '__main__':

EnumProcesses()

运行结果:

smss.exe

winlogon.exe

services.exe

lsass.exe

svchost.exe

svchost.exe

svchost.exe

spoolsv.exe

DhMachineSvc.exe

jqs.exe

GoogleUpdate.exe

NTFSWatcher.exe

OmniAddrService.exe

pcas.exe

nssm.exe

salt-minion.exe

TeamViewer_Service.exe

WinVNC4.exe

svchost.exe

Explorer.EXE

TSVNCache.exe

ctfmon.exe

chrome.exe

RocketDock.exe

chrome.exe

chrome.exe

chrome.exe

chrome.exe

chrome.exe

chrome.exe

chrome.exe

chrome.exe

chrome.exe

chrome.exe

TaobaoProtect.exe

conime.exe

SogouFlash.exe

SogouCloud.exe

SGImeGuard.exe

Xshell.exe

chrome.exe

aliwssv.exe

TM.exe

chrome.exe

Alipaybsm.exe

chrome.exe

mstsc.exe

iexplore.exe

iexplore.exe

cmd.exe

sublime_text.exe

plugin_host.exe

python.exe

NOTEPAD.EXE

chrome.exe

chrome.exe

SogouSmartInfo.exe

cmd.exe

python.exe

通过交互模式,使用WMI取得进程:

# http://mail.python.org/pipermail/python-win32/2003-December/001482.html

>>> import wmi

>>> processes = wmi.WMI().InstancesOf('Win32_Process')

>>> len(processes)

41

>>> [process.Properties_('Name').Value for process in processes] # get

the process names

[u'System Idle Process', u'System', u'SMSS.EXE', u'CSRSS.EXE',

u'WINLOGON.EXE', u'SERVICES.EXE', u'LSASS.EXE', u'SVCHOST.EXE',

u'SVCHOST.EXE', u'SVCHOST.EXE', u'SVCHOST.EXE', u'SPOOLSV.EXE',

u'ati2evxx.exe', u'BAsfIpM.exe', u'defwatch.exe', u'inetinfo.exe',

u'mdm.exe', u'rtvscan.exe', u'SCARDSVR.EXE', u'WLTRYSVC.EXE',

u'BCMWLTRY.EXE', u'EXPLORER.EXE', u'Apoint.exe', u'carpserv.exe',

u'atiptaxx.exe', u'quickset.exe', u'DSentry.exe', u'Directcd.exe',

u'vptray.exe', u'ApntEx.exe', u'FaxCtrl.exe', u'digstream.exe',

u'CTFMON.EXE', u'wuauclt.exe', u'IEXPLORE.EXE', u'Pythonwin.exe',

u'MMC.EXE', u'OUTLOOK.EXE', u'LineMgr.exe', u'SAPISVR.EXE',

u'WMIPRVSE.EXE']

# Here is how to get a single process and get its PID.

>>> p = wmi.WMI().ExecQuery('select * from Win32_Process where

Name="Pythonwin.exe"')

>>> [prop.Name for prop in p[0].Properties_] # let's look at all the

process property names

[u'Caption', u'CommandLine', u'CreationClassName', u'CreationDate',

u'CSCreationClassName', u'CSName', u'Description', u'ExecutablePath',

u'ExecutionState', u'Handle', u'HandleCount', u'InstallDate',

u'KernelModeTime', u'MaximumWorkingSetSize', u'MinimumWorkingSetSize',

u'Name', u'OSCreationClassName', u'OSName', u'OtherOperationCount',

u'OtherTransferCount', u'PageFaults', u'PageFileUsage',

u'ParentProcessId', u'PeakPageFileUsage', u'PeakVirtualSize',

u'PeakWorkingSetSize', u'Priority', u'PrivatePageCount', u'ProcessId',

u'QuotaNonPagedPoolUsage', u'QuotaPagedPoolUsage',

u'QuotaPeakNonPagedPoolUsage', u'QuotaPeakPagedPoolUsage',

u'ReadOperationCount', u'ReadTransferCount', u'SessionId', u'Status',

u'TerminationDate', u'ThreadCount', u'UserModeTime', u'VirtualSize',

u'WindowsVersion', u'WorkingSetSize', u'WriteOperationCount',

u'WriteTransferCount']

>>> p[0].Properties_('ProcessId').Value # get our ProcessId

928

方式四:

此方法可以跨平台,不过需要在安装psutil包.

import os

import psutil

import time

logPath = r'some\path\proclogs'

if not os.path.exists(logPath):

os.mkdir(logPath)

separator = "-" * 80

format = "%7s %7s %12s %12s %30s, %s"

format2 = "%7.4f %7.2f %12s %12s %30s, %s"

while 1:

# psutil.get_process_list() 方法已经废弃,可以使用psutil.process_iter()迭代器

procs = psutil.get_process_list()

procs = sorted(procs, key=lambda proc: proc.name)

logPath = r'some\path\proclogs\procLog%i.log' % int(time.time())

f = open(logPath, 'w')

f.write(separator + "\n")

f.write(time.ctime() + "\n")

f.write(format % ("%CPU", "%MEM", "VMS", "RSS", "NAME", "PATH"))

f.write("\n")

for proc in procs:

cpu_percent = proc.get_cpu_percent()

mem_percent = proc.get_memory_percent()

rss, vms = proc.get_memory_info()

rss = str(rss)

vms = str(vms)

name = proc.name

path = proc.path

f.write(format2 % (cpu_percent, mem_percent, vms, rss, name, path))

f.write("\n\n")

f.close()

print "Finished log update!"

time.sleep(300)

print "writing new log data!"

以上实现一个类似top的工具。

http://www.xdnf.cn/news/11057.html

相关文章:

  • 如何架设传奇服务器 (如何架设服务器:全面指南)
  • catia中的螺旋伞齿轮画法_详解齿轮画法与基本算法,学机械设计快收下吧
  • 2022年底最后汇总的常见路由器默认用户、默认密码、默认登录IP地址,值得收藏备用!
  • 水煮TCPMP(不得不转的好文)
  • 腾讯全面封杀显IPQQ,珊瑚虫作者被捕,飘云作者推出开发
  • Bolt界面引擎QuickStart: SDK,教程和开发环境
  • 皮肤过敏了怎么办?皮肤过敏偏方、皮肤过敏后怎么办?康本治疗最有效。
  • InstallShield 中文函数解释
  • WinRunner:强大的企业级自动化测试工具
  • 30天改变你的人生
  • 海外社媒运营必看:如何注册使用Snapchat?
  • windows安装nginx莫名其妙 CreateFile()权限不够创建问题
  • Cy3标记多糖之蔗糖、麦芽糖、乳糖
  • 全面剖析3721及上网助手
  • 常用日语网址
  • Vue 树状结构控件
  • Ubuntu 配置 Apache
  • Discuz 7.0版块横排显示版块图标和版块简介的方法
  • 什么是串口?什么是并口?串口与并口有什么区别?-道合顺大数据Infinigo
  • 卡巴斯基安全部队 2012 (KIS 2018) 激活key (9月5日更新)=最新卡巴斯基永久激活码
  • “北上广深”的程序员,薪资–生活成本=多少钱?
  • 最重要的7个Drupal内核模板文件
  • 历届奥斯卡获奖影片(1927—2012)(图)
  • 08杜琪峰动作大片《文雀》DVD中字(高清晰版)
  • [论文阅读](图像/视频质量评价系列)
  • linux android编译命令 mm -b,Android下make、mm、mmm之间的区别
  • 基于HTML+CSS+JavaScript仿淘宝购物商城设计毕业论文源码
  • 单片机C语言中判断按键是否按下,按键识别方法之一
  • CPU占用内存率高的几种可能以及解决方法
  • 启动应用程序出现mfc71chs.dll找不到问题解决