¿Cómo enumerar todas las aplicaciones que se muestran desde agregar/eliminar WinXP/Win7 a través de la línea de comandos?

¿Cómo enumerar todas las aplicaciones que se muestran desde agregar/eliminar WinXP/Win7 a través de la línea de comandos?

Estoy intentando enumerar todas las aplicaciones instaladas que se muestran en la lista de agregar o quitar programas (WinXP/Win7) a través de la línea de comandos. Entiendo que para Win7 se llama "Programas y características" en el cp.

Probé wmic pero solo enumera los programas instalados usando MSI. Intenté consultar el registro (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall y también wow6432node).

Todavía no puedo capturar Spotify (buen ejemplo); aparece en la sección agregar/eliminar pero no en estas ubicaciones.

¿Alguna idea?

-dom

Respuesta1

Parece que esto se puede hacer desde el wmiccomando
Prueba esto:

wmic product  

Muestra una lista de todo lo instalado en el ordenador
Fuentes:
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

Esta página dice que es para Windows Vista y 7, pero también probé wmic en Windows XP.
Obtenga una lista de aplicaciones instaladas desde la línea de comandos de Windows

Además, esta página explica que el método para verificar la entrada del registro puede no ser exacto.
http://community.spiceworks.com/how_to/show/2238-how-add-remove-programs-works

Aquí hay más información sobre qué más se puede hacer usando wmic:
http://betanews.com/2011/01/14/wmic-the-best-command-line-tool-you-ve-never-used/
Desde este sitio web, específicamente para su problema:

El programa también puede proporcionar detalles sobre muchos otros aspectos de su sistema. Comandos como:

breve lista de productos wmic

breve lista de servicios wmic

breve lista de procesos wmic

breve lista de inicio de wmic

enumerará el software instalado, los servicios, los procesos en ejecución y los programas de inicio de Windows, por ejemplo.

Respuesta2

No creo que esté satisfecho con ninguno de los enfoques de cmd ya que no estarán completos. Si estás de acuerdo con Powershell, esto me dio todo:

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
}

información relacionada