本文目录导读:

查看已安装软件的方法取决于你使用的操作系统,以下是常见系统的脚本/命令方式:
Windows
PowerShell(推荐)
# 列出所有已安装程序(显示名称、版本等)
Get-WmiObject -Class Win32_Product | Select-Object Name, Version, Vendor
# 更快的替代方案(使用注册表)
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, Publisher | Where-Object {$_.DisplayName}
# 列出所有用户安装的程序(包括32位)
Get-ItemProperty HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, Publisher | Where-Object {$_.DisplayName}
CMD(命令提示符)
:: 使用WMIC(已弃用,但大多数系统仍支持) wmic product get name,version,vendor :: 使用注册表查询 reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall /s /f "DisplayName" /t REG_SZ
Linux
Debian/Ubuntu(apt)
# 列出所有已安装包 dpkg -l # 更详细的列表 apt list --installed # 按名称搜索已安装包 dpkg -l | grep package-name
Red Hat/CentOS(yum/dnf)
# 列出所有已安装包 yum list installed # 或 dnf list installed # 使用rpm(底层工具) rpm -qa
Arch Linux(pacman)
# 列出所有显式安装的包 pacman -Qe # 列出所有已安装包(包括依赖) pacman -Q
通用方法(Snap/Flatpak)
# Snap包 snap list # Flatpak包 flatpak list
macOS
Homebrew(最常用)
# 列出所有通过brew安装的软件 brew list # 显示已安装的cask应用(GUI应用) brew list --cask
系统应用
# 列出/Applications目录中的.app文件 ls /Applications/ # 更详细的信息 system_profiler SPApplicationsDataType
MacPorts
port installed
跨平台脚本示例
Python(跨平台检查)
import subprocess
import platform
system = platform.system()
if system == "Windows":
import winreg
keys = [r"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall",
r"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"]
for key_path in keys:
with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, key_path) as key:
for i in range(winreg.QueryInfoKey(key)[0]):
subkey_name = winreg.EnumKey(key, i)
with winreg.OpenKey(key, subkey_name) as subkey:
try:
name = winreg.QueryValueEx(subkey, "DisplayName")[0]
version = winreg.QueryValueEx(subkey, "DisplayVersion")[0]
print(f"{name} - {version}")
except:
pass
elif system == "Linux":
result = subprocess.run(["dpkg", "-l"], capture_output=True, text=True)
print(result.stdout)
elif system == "Darwin": # macOS
result = subprocess.run(["brew", "list"], capture_output=True, text=True)
print(result.stdout)
注意事项
- 管理员权限:某些命令需要管理员/root权限
- 性能:
Win32_Product在Windows上可能较慢(会触发MSI修复) - 准确性:注册表方法可能遗漏某些现代应用(如Microsoft Store应用)
- 环境依赖:确保脚本运行环境中有所需工具(如brew、dpkg等)
需要针对特定系统或更详细的信息吗?