You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过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下的所有子键——每个子键对应一个已安装的版本(比如DC11.0XI等)。然后对每个版本,尝试读取它的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

火山引擎 最新活动