主机性能监控之wmi 获取进程信息

本文介绍了一种使用WMI(Windows Management Instrumentation)获取Windows系统上进程信息的方法,并提供了C++与Python两种语言的实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标 题: 主机性能监控之wmi 获取进程信息
作 者: itdef
链 接: http://www.cnblogs.com/itdef/p/3990499.html 

欢迎转帖 请保持文本完整并注明出处

 

仅在《主机性能监控之wmi 获取系统信息及内存性能信息》 代码中添加一个函数

使用的结构体位为Win32_Process

class Win32_Process : CIM_Process
{
  string Caption;
  string CommandLine;
  string CreationClassName;
  datetime CreationDate;
  string CSCreationClassName;
  string CSName;
  string Description;
  string ExecutablePath;
  uint16 ExecutionState;
  string Handle;
  uint32 HandleCount;
  datetime InstallDate;
  uint64 KernelModeTime;
  uint32 MaximumWorkingSetSize;
  uint32 MinimumWorkingSetSize;
  string Name;
  string OSCreationClassName;
  string OSName;
  uint64 OtherOperationCount;
  uint64 OtherTransferCount;
  uint32 PageFaults;
  uint32 PageFileUsage;
  uint32 ParentProcessId;
  uint32 PeakPageFileUsage;
  uint64 PeakVirtualSize;
  uint32 PeakWorkingSetSize;
  uint32 Priority;
  uint64 PrivatePageCount;
  uint32 ProcessId;
  uint32 QuotaNonPagedPoolUsage;
  uint32 QuotaPagedPoolUsage;
  uint32 QuotaPeakNonPagedPoolUsage;
  uint32 QuotaPeakPagedPoolUsage;
  uint64 ReadOperationCount;
  uint64 ReadTransferCount;
  uint32 SessionId;
  string Status;
  datetime TerminationDate;
  uint32 ThreadCount;
  uint64 UserModeTime;
  uint64 VirtualSize;
  string WindowsVersion;
  uint64 WorkingSetSize;
  uint64 WriteOperationCount;
  uint64 WriteTransferCount;
};
View Code

 

添加函数为

 1 bool CMyWMI::QueryProcessInfo()
 2 {
 3     HRESULT hres; //定义COM调用的返回  
 4     IEnumWbemClassObject* pEnumerator = NULL;  
 5     bool bRet = false;
 6 
 7     try{
 8         hres = pSvc_->ExecQuery(  
 9             bstr_t("WQL"),     
10             bstr_t("SELECT * FROM Win32_Process"),  
11             WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,   
12             NULL,  
13             &pEnumerator);  
14 
15         if (FAILED(hres))  
16         {  
17             throw exception("ExecQuery() error.");
18         }  
19 
20         while (pEnumerator)  
21         {
22             IWbemClassObject *pclsObj;  
23             ULONG uReturn = 0;  
24 
25             HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,   
26                 &pclsObj, &uReturn);  
27             if(0 == uReturn)  
28             {  
29                 break;  
30             }  
31 
32             GetInfo(L"Caption",pclsObj);
33             GetInfo(L"Handle",pclsObj);
34             GetInfo(L"ExecutablePath",pclsObj);
35             cout << endl;
36 
37             pclsObj->Release(); 
38         }
39 
40 
41     }catch(exception& e)
42     {
43         cout << e.what() << endl;
44         if(pEnumerator != NULL)
45         {
46             pEnumerator->Release(); 
47             pEnumerator = NULL;
48         }
49         return bRet;
50     }
51 
52 
53     if(pEnumerator != NULL)
54     {
55         pEnumerator->Release(); 
56         pEnumerator = NULL;
57     }
58 
59     bRet = true;
60     return bRet;
61 }
View Code

 

 

python代码

#!/usr/bin/env python 
# -*- coding: cp936 -*-
 
import wmi 
import os 
import sys 
import platform 
import time

def process_info():
    c = wmi.WMI()
    for p in c.Win32_Process():
        print p.ProcessId, p.Name , p.ExecutablePath
 

def main(): 
   process_info();
 
if __name__ == '__main__': 
    main() 
View Code

效果:

Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
0 System Idle Process None
4 System None
316 smss.exe None
448 csrss.exe None
520 wininit.exe None
548 csrss.exe None
596 services.exe None
604 lsass.exe None
612 lsm.exe None
640 winlogon.exe None
760 svchost.exe None
820 BaiduHips.exe None
852 BaiduSdSvc.exe None
932 BaiduAnSvc.exe None
1004 svchost.exe None
352 atiesrxx.exe None
1068 svchost.exe None
1232 svchost.exe None
1260 svchost.exe None







转载于:https://www.cnblogs.com/itdef/p/3990499.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值