• 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

  • 相关阅读:
    Python学习笔记之递归函数
    包管理工具-yum
    ElasticSearch定时清理缓存索引
    pytest实现多进程与多线程运行
    获取webView页面内窗体句柄
    文档测试
    ClickHouse 运维相关部分命令记录
    [转]contains a file system with errors, check forced
    log日志重复打印 修改
    jmeter参数化
  • 原文地址:https://www.cnblogs.com/slqt/p/5773763.html
Copyright © 2020-2023  润新知