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

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

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

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

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

202002180850143.jpg

以下是查找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

202002180850144.jpg

以下是查找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中os模块_python中的os模块
  • 怎么python画好几朵玫瑰花_怎么用python画玫瑰花,求大神贴代码,感激不尽
  • 51单片机电路原理图_10个定时器精选电路方案带你学习时钟脉冲的工作方式
  • python读取数据的函数详解_python如何从文件读取数据及解析
  • wxpython的安装步骤_wxPython的安装图文教程(Windows)
  • python findall函数_python re模块findall()函数实例解析
  • pip环境变量配置 python3.6_win10下Python3.6安装、配置以及pip安装教程
  • python卸载opencv_python怎么卸载opencv-问答-阿里云开发者社区-阿里云
  • python爬虫的意义_爬虫的意义与爬虫基本流程
  • python 安卓开发环境_Crazyflie笔记六: PC端 python 开发环境,安卓端开发环境搭建...
  • bool c语言_C++知识点 5:C++ 对 C 语言的扩展
  • 如何把密度函数化为标准正态二维分布_概率论复习(4): 正态分布
  • 网络拓扑图标_快速创建 HTML5 Canvas 电信网络拓扑图
  • python网页爬虫菜鸟教程_python菜鸟 想做一个简单的爬虫 求教程
  • python编程控制机器人_python人工智能机器人工具书籍: Learn Robotics Programming 2018
  • git 常用命令
  • JavaScript设计模式与开发实践系列之策略模式
  • java正则表式的使用
  • js如何打印object对象
  • js写一个简单的选项卡
  • node-glob通配符
  • python_bomb----数据类型总结
  • React组件设计模式(一)
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 排序(1):冒泡排序
  • 小李飞刀:SQL题目刷起来!
  • Spring Batch JSON 支持
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #pragma 指令
  • ${factoryList }后面有空格不影响
  • (3)nginx 配置(nginx.conf)
  • (function(){})()的分步解析
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (附源码)php新闻发布平台 毕业设计 141646
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)iOS字体
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Project Open Day(2011.11.13)
  • .NET 事件模型教程(二)
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .net中我喜欢的两种验证码
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • [17]JAVAEE-HTTP协议
  • [flask] flask的基本介绍、flask快速搭建项目并运行
  • [GYCTF2020]Ez_Express
  • [Invalid postback or callback argument]昨晚调试程序时出现的问题,MARK一下
  • [jQuery]div滚动条回到最底部
  • [Kubernetes]9. K8s ingress讲解借助ingress配置http,https访问k8s集群应用
  • [node] Node.js的全局对象Global