如何通过命令行列出添加/删除 WinXP/Win7 显示的所有应用程序?

如何通过命令行列出添加/删除 WinXP/Win7 显示的所有应用程序?

我正在尝试通过命令行列出添加/删除程序列表 (WinXP/Win7) 中显示的所有已安装应用程序。据我了解,对于 Win7,它被称为“程序和功能”。

我试过 wmic,但它只列出了使用 MSI 安装的程序。我试过查询注册表(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 和 wow6432node)。

我仍然无法捕获 Spotify(很好的例子);它出现在添加/删除部分,但不在这些位置。

有什么想法吗?

—多姆

答案1

看起来这可以通过wmic命令完成
尝试这个:

wmic product  

显示计算机上安装的所有内容的列表
来源:
http://www.sepago.de/d/helge/2010/01/14/how-to-list-all-installed-applications-from-the-command-line http://technet.microsoft.com/en-us/library/bb742610.aspx#ECAA

该页面显示它适用于 Windows Vista 和 7,但我也在 Windows XP 上测试过 wmic
从 Windows 命令行获取已安装应用程序的列表

此外,此页面解释了检查注册表项的方法可能不准确
http://community.spiceworks.com/how_to/show/2238-how-add-remove-programs-works

以下是有关使用 wmic 可以做什么的更多信息:
http://betanews.com/2011/01/14/wmic-the-best-command-line-tool-你从未使用过/
来自此网站,专门针对您的问题:

该程序还可以提供有关系统许多其他方面的详细信息。命令如下:

wmic产品列表简介

wmic 服务列表简介

wmic 进程列表简要

wmic 初创企业名单简介

例如,将列出您安装的软件、服务、正在运行的进程和 Windows 启动程序。

答案2

我认为您不会对任何 cmd 方法感到满意,因为它们并不完整。如果您对 Powershell 满意,那么这给了我一切:

If (!([Diagnostics.Process]::GetCurrentProcess(). Path -match '\\syswow64\\')) {
    $unistallPath = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
    $unistallWow6432Path = "\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\"
    
    @( 
        if (Test-Path "HKLM:$unistallWow6432Path" ) { Get-ChildItem "HKLM:$unistallWow6432Path"} 
        if (Test-Path "HKLM:$unistallPath" ) { Get-ChildItem "HKLM:$unistallPath" } 
        if (Test-Path "HKCU:$unistallWow6432Path") { Get-ChildItem "HKCU:$unistallWow6432Path"} 
        if (Test-Path "HKCU:$unistallPath" ) { Get-ChildItem "HKCU:$unistallPath" } 
    ) | 
    ForEach-Object { Get-ItemProperty $_.PSPath } | 
    Where-Object { 
        $_.DisplayName -and !$_.SystemComponent -and !$_.ReleaseType -and !$_.ParentKeyName -and ($_.UninstallString -or $_.NoRemove) 
    } | 
    Sort-Object DisplayName | 
    Select-Object DisplayName
} else {
    "You are running 32-bit Powershell on 64-bit system. Please run 64-bit Powershell instead." | 
    Write-Host -ForegroundColor Red
}

相关内容