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中__init__()方法的高级应用
May 11 Python
Python实现的手机号归属地相关信息查询功能示例
Jun 08 Python
详解python3中socket套接字的编码问题解决
Jul 01 Python
TensorFlow平台下Python实现神经网络
Mar 10 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
Tensorflow中的placeholder和feed_dict的使用
Jul 09 Python
Python实现的对一个数进行因式分解操作示例
Jun 27 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
tensorflow 分类损失函数使用小记
Feb 18 Python
python使用隐式循环快速求和的实现示例
Sep 11 Python
Python中Selenium模块的使用详解
Oct 09 Python
python中编写函数并调用的知识点总结
Jan 13 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
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
字母顺序颠倒而单词顺序不变的php代码
2010/08/08 PHP
yii上传文件或图片实例
2014/04/01 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
JS BASE64编码 window.atob(), window.btoa()
2021/03/09 Javascript
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
jquery multiSelect 多选下拉框
2010/07/09 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
2018/11/22 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
python实现telnet客户端的方法
2015/04/15 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
python使用协程实现并发操作的方法详解
2019/12/27 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
教师推荐信范文
2013/11/24 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
网络工程专业自荐信范文
2014/03/16 职场文书
公司捐款倡议书
2014/05/14 职场文书
推广普通话标语
2014/06/27 职场文书
优质护理心得体会
2016/01/22 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
Mysql案例刨析事务隔离级别
2021/09/25 MySQL
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技
基于Python实现射击小游戏的制作
2022/04/06 Python
java如何实现获取客户端ip地址的示例代码
2022/04/07 Java/Android