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 相关文章推荐
java直接调用python脚本的例子
Feb 16 Python
Python-基础-入门 简介
Aug 09 Python
python3中dict(字典)的使用方法示例
Mar 22 Python
Python中单、双下划线的区别总结
Dec 01 Python
python+VTK环境搭建及第一个简单程序代码
Dec 13 Python
Flask框架通过Flask_login实现用户登录功能示例
Jul 17 Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 Python
python导入pandas具体步骤方法
Jun 23 Python
Python如何使用Gitlab API实现批量的合并分支
Nov 27 Python
python-numpy-指数分布实例详解
Dec 07 Python
python中文分词库jieba使用方法详解
Feb 11 Python
django model通过字典更新数据实例
Apr 01 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 的几个配置文件函数
2006/12/21 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
jQuery中过滤器的基本用法示例
2017/10/11 jQuery
基于React+Redux的SSR实现方法
2018/07/03 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
ES7之Async/await的使用详解
2019/03/28 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
python3获取当前文件的上一级目录实例
2018/04/26 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
python中yield的用法详解
2021/01/13 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
巴西葡萄酒商店:Divvino
2020/02/22 全球购物
Java中compareTo和compare的区别
2016/04/12 面试题
如何在C# winform中异步调用web services
2015/09/21 面试题
文明礼仪事迹材料
2014/01/09 职场文书
中学生自我评价范文
2014/02/08 职场文书
聘用意向书范本
2014/04/01 职场文书
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android
浅谈Node的内存泄露问题
2022/05/06 NodeJs
Nginx限流和黑名单配置
2022/05/20 Servers
源码安装apache脚本部署过程详解
2022/09/23 Servers