python实现查找所有程序的安装信息


Posted in Python onFebruary 18, 2020

如题,答案是:通过注册表查找。

windows系统中有两支子健存储有所有程序的安装信息:

1,HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store

python实现查找所有程序的安装信息

以下是查找360浏览器安装路径的python代码示例:

import win32con, win32api

def find_360se_path(): 
 upper_keyword = '360SE.EXE' 
 path = None 
 sub_key = r'Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store' 
 key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, sub_key, 0, win32con.KEY_READ) 
 info = win32api.RegQueryInfoKey(key) 
 for i in range(0, info[1]):  
  value = win32api.RegEnumValue(key, i)  
  if value[0].upper().endswith(upper_keyword):
   path = value[0]   
   break 
 win32api.RegCloseKey(key) 
 return path

2,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

python实现查找所有程序的安装信息

以下是查找360浏览器安装路径的python代码示例:

import win32con, win32apidef 

find_360se_path(): 
 upper_value_keyword = '360SE.EXE' 
 upper_item_name_keyword = '360SE6.EXE' 
 path = None 
 sub_key1 = r'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths' 
 key1 = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, sub_key1, 0, win32con.KEY_READ) 
 info1 = win32api.RegQueryInfoKey(key1) 
 for i in range(0, info1[0]):  
  key_name = win32api.RegEnumKey(key1, i)  
  if key_name.upper() == upper_item_name_keyword:
   sub_key2 = sub_key1 + '\\' + key_name
   key2 = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, sub_key2, 0, win32con.KEY_READ)   
   info2 = win32api.RegQueryInfoKey(key2)   
   for j in range(0, info2[1]):    
    key_value = win32api.RegEnumValue(key2, j)[1]
    if key_value.upper().endswith(upper_value_keyword): 
     path = key_value     
     break   
   win32api.RegCloseKey(key2)   
  break 
 win32api.RegCloseKey(key1) 
 return path
Python 相关文章推荐
编写Python脚本来实现最简单的FTP下载的教程
May 04 Python
Python函数可变参数定义及其参数传递方式实例详解
May 25 Python
python基础教程之匿名函数lambda
Jan 17 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
Apr 08 Python
python获取url的返回信息方法
Dec 17 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
python移位运算的实现
Jul 15 Python
python如何实现数据的线性拟合
Jul 19 Python
python3实现弹弹球小游戏
Nov 25 Python
Django高并发负载均衡实现原理详解
Apr 04 Python
七个Python必备的GUI库
Apr 27 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
Feb 18 #Python
Pytorch mask_select 函数的用法详解
Feb 18 #Python
pytorch masked_fill报错的解决
Feb 18 #Python
python分别打包出32位和64位应用程序
Feb 18 #Python
pandas和spark dataframe互相转换实例详解
Feb 18 #Python
PyTorch中Tensor的数据统计示例
Feb 17 #Python
pytorch实现Tensor变量之间的转换
Feb 17 #Python
You might like
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
jquery中的on方法使用介绍
2013/12/29 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
JavaScript 中的六种循环方法
2021/01/06 Javascript
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
python字符串编码识别模块chardet简单应用
2015/06/15 Python
Python使用win32 COM实现Excel的写入与保存功能示例
2018/05/03 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
请介绍一下Ant
2016/07/22 面试题
linux下进程间通信的方式
2013/01/23 面试题
部队万能检讨书
2014/02/20 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
实习推荐信格式模板
2015/03/27 职场文书
冰雪公主观后感
2015/06/16 职场文书
老人院义工活动感想
2015/08/07 职场文书
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle