# -*- coding: utf-8 -*-
import winreg
import re
import win32con, win32api
def find_exe_path(exe_name):
try:
path = None
upper_keyword = exe_name.upper()
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(info[1]):
value = win32api.RegEnumValue(key, i)
exe_path = value[0].upper()
if upper_keyword in exe_path:
path = value[0]
break
return path
except Exception:
return None
def closeReg(key):
winreg.CloseKey(key)
def openReg(key):
return winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key)
def queryVal(key, name):
(value, type) = winreg.QueryValueEx(key, name)
return value
def find_exe(keypath, softname):
key = openReg(keypath)
i = 0
result = ""
try:
while 1:
name = winreg.EnumKey(key, i)
path = keypath + "\\" + name
subkey = openReg(path)
try:
value = str(queryVal(subkey, 'DisplayName')).upper()
if str(softname.upper()) in value:
value = queryVal(subkey, 'DisplayVersion')
result = value
closeReg(subkey)
break
except:
pass
finally:
closeReg(subkey)
i += 1
except:
pass
closeReg(key)
return result
def get_exe_path_name_val(_name):
try:
keypath1 = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
keypath2 = r"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
exe_path = find_exe_path(_name)
exe_val = None
exe_name = None
if exe_path:
print('路径:%s'% exe_path)
exe_path = (exe_path.replace('\\','\n'))
if exe_path:
exe_name = re.findall(r'\n(.+?).exe', exe_path)[0]
print('程序名称:%s'% exe_name)
exe_val = find_exe(keypath1, exe_name)
if exe_val == "":
exe_val = find_exe(keypath2, exe_name)
if exe_val == "":
exe_val = find_exe(keypath2, _name)
print('程序版本:%s\n'% exe_val)
return (exe_path,exe_name,exe_val)
except Exception as e:
print('获取exe版本信息异常: %s'% e)
return ('获取exe版本信息异常: %s'% e)
if __name__ == "__main__":
get_exe_path_name_val('Chrome')
get_exe_path_name_val('Firefox')
get_exe_path_name_val('Python')
Python 查询电脑安装程序的路径、版本
最新推荐文章于 2023-10-20 14:54:26 发布
此博客介绍了如何通过Python脚本从Windows注册表中查找指定应用(如Chrome、Firefox)的安装路径和版本,通过RegKey操作和正则表达式实现,适用于软件开发者和系统管理员了解程序安装情况。
摘要由CSDN通过智能技术生成