Python获取Windows已安装的所有应用程序列表
Python获取Windows已安装的所有应用程序列表
演示效果
获取已安装列表,过滤后重新排序,保存到数组。
import winreg
import osdef get_installed_software():# 存储已安装软件名称的集合,用于去重software_set = set()# 需要检查的注册表路径registry_paths = [# 64位程序 (系统安装)r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall",# 32位程序在64位系统上 (系统安装)r"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall",# 当前用户安装的程序r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"]# 检查不同的根键hkeys = [winreg.HKEY_LOCAL_MACHINE]# 如果是当前用户路径,添加HKEY_CURRENT_USERhkeys.append(winreg.HKEY_CURRENT_USER)# 遍历所有根键和路径组合for hkey in hkeys:for path in registry_paths:try:# 打开注册表键with winreg.OpenKey(hkey, path) as key:# 获取子键数量num_subkeys = winreg.QueryInfoKey(key)[0]# 遍历所有子键for i in range(num_subkeys):try:# 获取子键名称subkey_name = winreg.EnumKey(key, i)# 构建完整路径subkey_path = os.path.join(path, subkey_name)# 打开子键with winreg.OpenKey(hkey, subkey_path) as subkey:try:# 尝试获取DisplayName值display_name = winreg.QueryValueEx(subkey, "DisplayName")[0]# 确保名称不为空且是字符串if display_name and isinstance(display_name, str):software_set.add(display_name)except FileNotFoundError:# 如果DisplayName不存在,跳过continueexcept Exception:# 处理子键访问错误continueexcept Exception:# 处理主键访问错误continue# 转换为列表并排序return sorted(software_set)# 获取完整的已安装软件列表
software_list = get_installed_software()# 输出软件数量
print(f"共检测到 {len(software_list)} 个已安装程序:")
print("=" * 50)# 换行输出每个软件名称
for i, software in enumerate(software_list, 1):print(f"{i}. {software}")