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

python 程序列表

用 python  通过读取注册表来获取机器安装的程序列表,包括,软件名称,版本号,安装日期等

# -*- coding: UTF8 -*-
import _winreg
import os
import CommMethod

1、

'''获取SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths下的程序列表'''
def GetAppPathsRegeditInfo(list):
  keyPath = r"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths"
  key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, keyPath, 0, _winreg.KEY_ALL_ACCESS)
  listKeys = _winreg.QueryInfoKey(key)
  for i in xrange(0,listKeys[0]-1):
  key_name_list =_winreg.EnumKey(key, i)
  each_key_path = keyPath + '\\' + key_name_list
  try:
    each_key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, each_key_path, 0, _winreg.KEY_READ)
    fpath,REG_SZ = _winreg.QueryValueEx(each_key, "")
    fInfo = CommMethod.getFileInfo(fpath)
    list.append(fInfo)
  except:
    continue

2、

  ''''获取SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall下的程序列表'''
    def GetUninstallRegeditInfo(list):
      keyPath = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
      key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, keyPath, 0, _winreg.KEY_ALL_ACCESS)
      for i in xrange(0,_winreg.QueryInfoKey(key)[0]-1):
        key_name_list =_winreg.EnumKey(key, i)
        each_key_path = keyPath+'\\'+key_name_list
        each_key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, each_key_path, 0, _winreg.KEY_ALL_ACCESS)
        try:
          DisplayName, REG_SZ = _winreg.QueryValueEx(each_key, "DisplayName")
          #DisplayName = DisplayName.encode('utf-8')
          DisplayVersion, REG_SZ = _winreg.QueryValueEx(each_key, "DisplayVersion")
          InstallDate, REG_SZ = _winreg.QueryValueEx(each_key, "InstallDate")
          if (len(DisplayName)>0 and len(DisplayVersion)>0 and len(InstallDate)>0):
            fInfo = CommMethod.SoftwareInfo(DisplayName,InstallDate,DisplayVersion)
            list.append(fInfo)
        except WindowsError:
          pass

相关文章:

  • CISA 信息系统审计知识点 [第二章. IT治理和管理 ]
  • 让标签横向滑动 盒模型
  • 编程基础-----c语言打印调用栈
  • xcache为php加速
  • 倒立三角打印
  • TCP协议简介
  • 程序图标,几十万个随你选
  • JAVA的双色球 小程序
  • 写出好的 commit message
  • 微软开发团队的DevOps实践启示
  • centos6.5环境下svn服务器和客户端配置实用详解
  • python 字典(dict)按键和值排序
  • url获取数据
  • 如何绘制caffe网络训练曲线
  • 日志分析系统——Hangout源码学习
  • Android开源项目规范总结
  • mongo索引构建
  • 关于Java中分层中遇到的一些问题
  • 讲清楚之javascript作用域
  • 警报:线上事故之CountDownLatch的威力
  • 异常机制详解
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (libusb) usb口自动刷新
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)h264中avc和flv数据的解析
  • (转)菜鸟学数据库(三)——存储过程
  • (转)创业的注意事项
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET 解决重复提交问题
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NET分布式缓存Memcached从入门到实战
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • @Repository 注解
  • [ 数据结构 - C++]红黑树RBTree
  • []指针
  • [<MySQL优化总结>]
  • [BSGS算法]纯水斐波那契数列
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [C++] 统计程序耗时
  • [CSAWQual 2019]Web_Unagi ---不会编程的崽
  • [G-CS-MR.PS02] 機巧之形2: Ruler Circle
  • [JS] node.js 入门
  • [LeetCode]-Integer to Roman 阿拉伯数字转罗马数字
  • [MongoDB]------windos下的安装部署与基础使用
  • [MySQL数据库部署及初始化相关]