您当前的位置:首页 > 计算机 > 编程开发 > Python

python --winreg(通过windows注册表打开应用程序)

时间:08-14来源:作者:点击数:

python --winreg(通过windows注册表打开应用程序)

import winreg as reg

reg_path = r'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe'

chrome_path = None
last_exception = None

for install_type in reg.HKEY_CURRENT_USER, reg.HKEY_LOCAL_MACHINE:
    print(install_type)
    try:
        reg_key = reg.OpenKey(install_type, reg_path, 0, reg.KEY_READ)
        print(reg_key)
        chrome_path = reg.QueryValue(reg_key, None)
        reg_key.Close()
    except WindowsError as e:
        last_exception = e
    else:
        if chrome_path and len(chrome_path) > 0:
            break

print(chrome_path)

附录

打开指定的键,返回一个处理对象

winreg.OpenKey(key, sub_key, reserved=0, access=winreg.KEY_READ)
winreg.OpenKeyEx(key, sub_key, reserved=0, access=winreg.KEY_READ)
  • key:HKEY_ 常量
  • sub_key:指定键的子键
  • reserved:一个保留的证书,必须是零。默认值为零
  • access:访问权限

winreg.QueryValue(key,sub_key) #用一个字符串来检索一个键的值

寻找应用程序的位置并打开

1).定位360安全卫士的注册表项:

1)).打开系统注册表编辑器,然后进行搜索关键字:

在这里插入图片描述

2)).定位到注册表路径

在这里插入图片描述

2).打开注册表键

通过我们找到的子键然后对其进行查找操作,得到处理对象的句柄“reg”

reg=winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,r"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\360安全卫士")

3).找到应用的绝对路径并打印

通过数值名称找到数值数据,

path=winreg.QueryValueEx(reg,'DisplayIcon')

这样就找到了这个应用的绝对路径了,返回值是一个元祖,我们使用索引访问:

path[0]

打开路径

os.popen(path[0])

最后别忘了关闭对象处理句柄哦。

#两种方法都可以关闭
winreg.CloseKey(reg)
reg.Close()

获取微信的安装路径

方法一

import winreg
import subprocess

def get_wechat_installation_path():
    key_path = r"Software\Tencent\WeChat"
    try:
        key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path, 0, winreg.KEY_READ)
        value, _ = winreg.QueryValueEx(key, "InstallPath")
        return value[0].upper() + value[1:] + '\WeChat.exe'
    except FileNotFoundError:
        print("找不到微信程序")
        return None

a = get_wechat_installation_path()
print(a)
subprocess.Popen(a)

方法二

import win32api
import win32con
 
# 读取注册表找到微信的安装路径
def getWxInstallPath():
    try:
	    # 注册表打开
	    # RegOpenKey(key, subKey , reserved , sam)
	    # key: HKEY_CLASSES_ROOT HKEY_CURRENT_USER HEKY_LOCAL_MACHINE HKEY_USERS HKEY_CURRENT_CONFIG
	    # subkey: 要打开的子项
	    # reserved: 必须为0
	    # sam: 对打开的子项进行的操作,包括win32con.KEY_ALL_ACCESS、win32con.KEY_READ、win32con.KEY_WRITE等
	     key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, "SOFTWARE\Tencent\WeChat", 0, win32con.KEY_ALL_ACCESS) 
	    # 这里的key表示键值,后面是具体的键名,读取出来是个tuple
	     value = win32api.RegQueryValueEx(key, "InstallPath")[0]
	    # 用完之后记得关闭
	     win32api.RegCloseKey(key)
	    # 微信的路径
	     value += "\\" + "WeChat.exe"
	     return value
    except Exception as ex: ...
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐