脚本如何查看已安装软件

wen 实用脚本 28

本文目录导读:

脚本如何查看已安装软件

  1. Windows
  2. Linux
  3. macOS
  4. 跨平台脚本示例
  5. 注意事项

查看已安装软件的方法取决于你使用的操作系统,以下是常见系统的脚本/命令方式:

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等)

需要针对特定系统或更详细的信息吗?

抱歉,评论功能暂时关闭!