用 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

python 程序列表的更多相关文章

  1. Python程序的常见错误(收集篇)

    关于Python Python是一门解释性的,面向对象的,并具有动态语义的高级编程语言.它高级的内置数据结构,结合其动态类型和动态绑定的特性,使得它在快速应用程序开发(Rapid Applicatio ...

  2. Python之列表、字符串、元组和字典的基本用法

    1 模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单 ...

  3. Python自动化 【第二篇】:Python基础-列表、元组、字典

    本节内容 模块初识 .pyc简介 数据类型初识 数据运算 列表.元组操作 字符串操作 字典操作 集合操作 字符编码与转码 一.模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库, ...

  4. 编写高质量代码--改善python程序的建议(六)

    原文发表在我的博客主页,转载请注明出处! 建议二十八:区别对待可变对象和不可变对象 python中一切皆对象,每一个对象都有一个唯一的标识符(id()).类型(type())以及值,对象根据其值能否修 ...

  5. 编写高质量代码--改善python程序的建议(八)

    原文发表在我的博客主页,转载请注明出处! 建议四十一:一般情况下使用ElementTree解析XML python中解析XML文件最广为人知的两个模块是xml.dom.minidom和xml.sax, ...

  6. 《编写高质量代码:改善Python程序的91个建议》读后感

    编写高质量代码:改善Python程序的91个建议  http://book.douban.com/subject/25910544/ 1.(建议16)is 用于判断两个对象的id是否相等,==才是判断 ...

  7. 让你的python程序同时兼容python2和python3

    python邮件列表里有人发表言论说「python3在10内都无法普及」.在我看来这样的观点有些过于悲观,python3和python2虽然不兼容,但他们之间差别并没很多人想像的那么大.你只需要对自己 ...

  8. Python的列表

    1. Python的列表简介 1. 1 列表的定义 列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型.列表中的每个元素都分配一个数字 ,即它的 ...

  9. Jenkins简明入门(二) -- 利用Jenkins完成Python程序的build、test、deployment

    大家可能还没搞清楚,Jenkins到底能做什么? 本节内容利用Jenkins完成python程序的build.test.deployment,让大家对Jenkins能做的事情有一个直观的了解. 本节内 ...

随机推荐

  1. 深入理解计算机系统第二版习题解答CSAPP 2.15

    只使用位级运算和逻辑运算,编写一个C表达式,它等价于x==y.换句话说,当x和y相等时它将返回1,否则就返回0. !(x ^ y)

  2. 【C语言】函数和自定义函数

    函数,我之前也提到过一点点内容.其实函数是很好理解的,但是写起来又十分麻烦. 一.     函数引入 我们知道,C源程序是由函数组成的.请看下面的简单函数例子 #include <stdio.h ...

  3. dedecms 知识点总结

    生成-更新主页html 将自定义字段在arclist调用:   内容模型管理==>频道模型管理==>增加新字段==>列表处理:  使字段可以在列表的底层模板中获得(自定义字段默认仅能 ...

  4. <你不知道的JavaScript>读书笔记

    近几天看了一本不错的 JavaScript 的书,是 Kyle Simpson 写的 <You Don't know JS>.这本书是 Kyle Simpson 在 Github 上的开源 ...

  5. 结果集一组数据的第几条ROW_NUMBER基本用法

    因为项目中用到,今天来记录下 ROW_NUMBER的用法. 说明:返回结果集分区内行的序列号,每个分区的第一行从 1 开始. 语法:ROW_NUMBER () OVER ([ <partitio ...

  6. Android——将图片加入到系统相册里面

    Adnroid中保存图片的方法可能有如下两种: 第一种是自己写方法,如下代码: public static File saveImage(Bitmap bmp) { File appDir = new ...

  7. Anddoi 将时间转换为指定时区的时间

    import java.text.Format;import java.text.ParseException;import java.text.SimpleDateFormat;import jav ...

  8. shell脚本实例(2)

    1.传给脚本一个参数:目录,输出该目录中文件最大的,文件名和文件大小 #!/bin/bash if [ $# -ne 1 -o ! -d $1 ];then echo "Args is er ...

  9. 使用javascript获取gridview中的textbox值

    <body> <form id="form1" runat="server"> <div> <asp:gridview ...

  10. 启用Win8(中文版/核心版)中被阉割的远程桌面服务端

    Windows 8/8.1 标准版(中文版/核心版)中取消了远程桌面服务端,想通过远程连接到自己的电脑就很麻烦了,第三方远程桌面速度又不理想(如TeamViewer).通过以下方法可让系统恢复远程桌面 ...