【进程检测】使用pywin32捕获window进程信息

需求

  1. 检测win系统依赖服务进程的运行情况,版本信息(进程检测器)
  2. 检测内外网连接情况

实现

进程检测

# 使用pywin32获取进程版本信息
def get_version_info(path):
    try:
        info = GetFileVersionInfo(path, '\\')
        ms = info['FileVersionMS']
        ls = info['FileVersionLS']
        version = f"{HIWORD(ms)}.{LOWORD(ms)}.{HIWORD(ls)}.{LOWORD(ls)}"
        return version
    except Exception as e:
        print(f"无法获取版本信息: {e}")
        return None

def find_process_by_name(name, file):
    # 遍历活动进程
    for proc in psutil.process_iter(['pid', 'name', 'exe']):
        if name.lower() in proc.info['name'].lower():
            # 格式化输出
            print(f"{'-' * 40}进程 {name:^20} 存在.{'-' * 40}")
            print(f"找到进程: {proc.info['name']} (PID: {proc.info['pid']})")
            print(f"完整路径: {proc.info['exe']}")
            # 写入文件
            file.write(f"{'-' * 40}进程 {name:^20} 存在.{'-' * 40}\n")
            file.write(f"找到进程: {proc.info['name']} (PID: {proc.info['pid']})\n")
            file.write(f"完整路径: {proc.info['exe']}\n")
            # 获取版本信息
            version = get_version_info(proc.info['exe'])
            if version:
                print(f"版本信息: {version}")
                file.write(f"版本信息: {version}\n")
            print('-' * 112)
            print('\n')
            file.write('-' * 112 + '\n')      
            file.write('\n')
            return True
    print(f"\n未找到进程 {name}.\n")
    file.write(f"\n未找到进程 {name}.\n")
    return False

网络检测

def check_network(host, port=80):
    """检查网络连接是否正常。"""
    try:
        socket.create_connection((host, port), 2)
        return True
    except socket.error:
        return False

主函数


if __name__ == '__main__':
    output_file = open("检测结果.txt", "w", encoding="utf-8")
    try:        
        print("网络连接检测:")    
        out_ = check_network("www.baidu.com")
        in_ = check_network("192.168.xxx.xxx")
        print("外网访问:  ", "Success" if out_ else "Failed")
        print("内网访问:  ", "Success" if in_ else "Failed")
        output_file.write(f"网络连接检测:\n外网访问:  {'Success' if out_ else 'Failed'}\n"
                          f"内网访问:  {'Success' if in_ else 'Failed'}\n\n")
    
        # 定义要检查的进程列表
        processes = [
            "*******e.exe",
            .....
        ]
        
        for process_name in processes:
            find_process_by_name(process_name, output_file)
        print("检测完成,结果已写入检测结果.txt")
    finally:
        output_file.close()
        input("按任意键退出...")

运行结果

在这里插入图片描述

打包exe

!!!!!!!管理员打开powershell!!!!!!!

设置策略:set-executionpolicy remotesigned (选择y或者点击是)

查看策略:get-executionpolicy

创建虚拟环境:python -m venv my_env

切换到虚拟环境目录下:cd my_env\Scripts

激活环境:activate

查看py环境依赖:pip list (干干净净没有其他的依赖包)

安装py文件依赖:psutil、pywin32、pyinstaller

执行打包命令:pyinstaller --noconfirm .\gadget.py (带依赖目录,启动较快,但是要带个尾巴)

pyinstaller -F .\gadget.py (单独一个exe包,但是启动巨慢)

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值