zoukankan      html  css  js  c++  java
  • python调用win32com.client的GetObject查找进程信息及服务信息

    为何不用wmi呢?因为执行很慢,为啥不用winreg?因为winreg在批量获取及遍历服务方面很不方便,于是采用这方法

    该方法同命令行下的wmic执行

    获取服务信息

    #coding=utf8
    from win32com.client import GetObject
    mywmi = GetObject("winmgmts:")
    objs = mywmi.InstancesOf("Win32_Service") 
    for obj in objs:
        print obj.PathName 

    获取进程信息

    #coding=utf8
    from win32com.client import GetObject mywmi = GetObject("winmgmts:") objs = mywmi.InstancesOf("Win32_Process") for obj in objs: #print obj.executablepath print obj.CommandLine

    执行代码的灵感来源于以下这段文字:

    VB使用Wmi获取系统当前进程详细信息/列表,VB使用Wmi获取系统当前进程信息/列表,VB使用Wmi获取系统进程信息/列表,VB使用Wmi获取当前进程信息/列表,VB使用Wmi获取进程信息/列表,VB Wmi 获取当前进程信息/列表,VB Wmi 系统进程详细信息/列表,VB Wmi 进程列表,VB Wmi 进程信息,VB Wmi 进程,VB Wmi,GetObject("winmgmts://./root/cimv2:win32_process").instances,winmgmts://./root/cimv2:win32_process,VB winmgmts://./root/cimv2,VB win32_process,VB GetObject,进程名称:Wmi.Name,进程路径:Wmi.executablepath,线程数量:Wmi.ThreadCount,PID:Wmi.ProcessID,父PID:Wmi.ParentProcessID,优先级:Wmi.Priority,命令行:Wmi.CommandLine,占用内存:Wmi.WorkingSetSize / 1024 & "K",用户名称:Wmi.ExecMethod_("GetOwner").User,启动时间:Wmi.CreationDate,另外一种获取PID函数:Wmi.Handle。
    VB使用Wmi获取系统当前进程详细信息:
    Dim Wmi, Jic As String
    For Each Wmi In GetObject("winmgmts://./root/cimv2:win32_process").instances_ '循环进程
    Jic = Jic & " " & _
    "进程:" & Wmi.Name & " " & _
    "路径:" & Wmi.executablepath & " " & _
    "线程:" & Wmi.ThreadCount & " " & _
    "PID:" & Wmi.ProcessID & " " & _
    "父PID:" & Wmi.ParentProcessID & " " & _
    "优先级:" & Wmi.Priority & " " & _
    "命令行:" & Wmi.CommandLine & " " & _
    "内存:" & Wmi.WorkingSetSize / 1024 & "K" & " " & _
    "用户:" & Wmi.ExecMethod_("GetOwner").User & " " & _
    "启动时间:" & Wmi.CreationDate & " " & vbCrLf
    '"PID:" & Wmi.Handle '另外一种获取PID函数
    Next
    MsgBox Jic
    VB "winmgmts://./root/CIMV2"对象的详细用法:
    ·GetOwner() 取得进程用户名。用法:objGetOwner(变量名)
    Terminate() 结束进程。用法:obj.Terminate()
    
    属性:
    ProcessID 进程的PID。
    ThreadCount 进程的线程数
    ExecutablePath 进程的完整路径

     服务状态 State

    可用参数如下

    [Dynamic, Provider("CIMWin32"), SupportsUpdate, UUID("{8502C4D9-5FBB-11D2-AAC1-006008C78BC7}"), DisplayName("Services"), AMENDMENT]
    class Win32_Service : Win32_BaseService
    {
      boolean  AcceptPause;
      boolean  AcceptStop;
      string   Caption;
      uint32   CheckPoint;
      string   CreationClassName;
      boolean  DelayedAutoStart;
      string   Description;
      boolean  DesktopInteract;
      string   DisplayName;
      string   ErrorControl;
      uint32   ExitCode;
      datetime InstallDate;
      string   Name;
      string   PathName;
      uint32   ProcessId;
      uint32   ServiceSpecificExitCode;
      string   ServiceType;
      boolean  Started;
      string   StartMode;
      string   StartName;
      string   State;
      string   Status;
      string   SystemCreationClassName;
      string   SystemName;
      uint32   TagId;
      uint32   WaitHint;
    };
    

      参见msdn:https://docs.microsoft.com/zh-cn/windows/desktop/CIMWin32Prov/win32-service

  • 相关阅读:
    最全的.NET Core跨平台微服务学习资源没有之一
    MySQL添加列、删除列,创建主键等常用操作总结
    SQL Server函数之空值处理
    SqlServer中循环和条件语句
    【转载】ASP.NET Core Web 支付功能接入 微信-扫码支付篇
    【转载】ASP.NET Core Web 支付功能接入 支付宝-电脑网页支付篇
    Core知识整理
    C#对接----韵达开发平台--取电子面单
    Cookie 用法
    微信支付V3版本的那些事
  • 原文地址:https://www.cnblogs.com/slqt/p/5773763.html
Copyright © 2011-2022 走看看