📅  最后修改于: 2023-12-03 15:22:20.606000             🧑  作者: Mango
当我们需要获取 Windows 操作系统中已安装的软件列表时,可以使用 Python 并通过 Windows 的注册表(Registry)进行查询。下面是一个示例程序,可以实现该功能。
import winreg
def get_installed_software_list():
software_list = []
reg_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
try:
reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
key = winreg.OpenKey(reg, reg_path, 0, winreg.KEY_READ)
except WindowsError:
return None
i = 0
while True:
try:
subkey = winreg.EnumKey(key, i)
subkey_path = reg_path + "\\" + subkey
try:
subkey_key = winreg.OpenKey(reg, subkey_path, 0, winreg.KEY_READ)
displayName, _ = winreg.QueryValueEx(subkey_key, "DisplayName")
displayVersion, _ = winreg.QueryValueEx(subkey_key, "DisplayVersion")
software_list.append((displayName, displayVersion))
winreg.CloseKey(subkey_key)
except WindowsError:
pass
i += 1
except WindowsError:
break
winreg.CloseKey(key)
winreg.CloseKey(reg)
return software_list
该程序查询了 Windows 操作系统中的注册表,访问了 "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" 下的各个子键,通过各个子键中的 "DisplayName" 和 "DisplayVersion" 字段获取软件名称和版本号。
该程序返回一个包含 (软件名称,软件版本) 元组的列表。
if __name__ == '__main__':
installed_software_list = get_installed_software_list()
if installed_software_list is None:
print("无法获取已安装软件列表")
else:
print("已安装软件列表:")
for software in installed_software_list:
print("- %s (%s)" % software)
程序运行结果类似以下形式:
已安装软件列表:
- Python 3.8.2 (3.8.2150.0)
- PyCharm Community Edition 2020.3.3 (203.7148.72)
- Microsoft Visual C++ 2015-2019 Redistributable (x64) - 14.27.29016 (14.27.29016.0)
...
通过以上代码实现,可以获取 Windows 操作系统中已安装的软件列表。值得注意的是,该列表仅包含注册表中的信息,可能会存在某些软件未被正确注册到该列表中的情况。同时,该程序只查询了 HKEY_LOCAL_MACHINE 分支下的注册表,而并未查询 HKEY_CURRENT_USER 分支下的注册表。如有需要,可以进一步扩展代码来实现该功能。