如何通过winreg获取Acrobat Reader完整路径及检测版本
解决Acrobat Reader完整路径获取及多版本检测问题
1. 获取包含AcroRd32.exe的完整路径
你已经通过注册表拿到了Reader的安装目录,只需要把AcroRd32.exe文件名和这个目录拼接起来就行。推荐用Python的os.path.join方法,它会自动处理Windows的路径分隔符,比手动拼接字符串更稳妥:
from winreg import OpenKey, HKEY_LOCAL_MACHINE, QueryValueEx import os # 读取注册表获取安装目录(用原始字符串避免转义符问题) key = OpenKey(HKEY_LOCAL_MACHINE, r"Software\WOW6432Node\Adobe\Acrobat Reader\DC\InstallPath", 0) install_dir = QueryValueEx(key, '')[0] # 拼接完整exe路径 full_exe_path = os.path.join(install_dir, "AcroRd32.exe") print(full_exe_path) # 输出示例:C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe
2. 检测已安装的其他Acrobat Reader版本
要找到所有已安装的Reader版本,你可以枚举Software\WOW6432Node\Adobe\Acrobat Reader下的所有子键——每个子键对应一个已安装的版本(比如DC、11.0、XI等)。然后对每个版本,尝试读取它的InstallPath键来获取完整路径:
from winreg import OpenKey, HKEY_LOCAL_MACHINE, QueryValueEx, EnumKey, KEY_READ import os def get_all_acrobat_reader_versions(): installed_versions = {} try: # 打开Acrobat Reader的注册表根键 root_key = OpenKey(HKEY_LOCAL_MACHINE, r"Software\WOW6432Node\Adobe\Acrobat Reader", 0, KEY_READ) index = 0 while True: try: # 枚举每个版本子键 version_name = EnumKey(root_key, index) # 尝试读取该版本的安装路径 try: install_path_key = OpenKey(root_key, fr"{version_name}\InstallPath", 0, KEY_READ) install_dir = QueryValueEx(install_path_key, '')[0] full_exe_path = os.path.join(install_dir, "AcroRd32.exe") installed_versions[version_name] = full_exe_path install_path_key.close() except FileNotFoundError: # 部分版本可能没有InstallPath键,记录状态 installed_versions[version_name] = "安装路径未找到" index += 1 except OSError: # 枚举完所有子键后退出循环 break root_key.close() except FileNotFoundError: return "未在注册表中找到任何Acrobat Reader版本" return installed_versions # 调用函数并打印结果 versions = get_all_acrobat_reader_versions() for version, path in versions.items(): print(f"版本: {version},完整路径: {path}")
额外注意事项
- 系统位数差异:如果是32位Windows系统,注册表路径不需要
WOW6432Node,直接用r"Software\Adobe\Acrobat Reader"即可。你可以通过sys.maxsize判断系统位数,让代码兼容两种环境。 - 权限问题:读取
HKEY_LOCAL_MACHINE下的注册表键可能需要管理员权限,如果运行脚本时报错权限不足,尝试以管理员身份启动Python解释器。 - Acrobat Pro与Reader的区别:如果你需要检测Acrobat Pro版本,注册表路径是
r"Software\WOW6432Node\Adobe\Acrobat",逻辑和Reader类似。
内容的提问来源于stack exchange,提问作者Jisson




