Estou tentando listar todos os aplicativos instalados exibidos na lista de adicionar/remover programas (WinXP/Win7) via linha de comando. Entendo que para Win7 é chamado de "Programas e Recursos" do cp.
Eu tentei o wmic, mas ele lista apenas os programas instalados usando MSIs. Tentei consultar o registro (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall e também wow6432node).
Ainda não consigo prender o Spotify (bom exemplo); ele aparece na seção adicionar/remover, mas não nesses locais.
Alguma ideia?
-Dom
Responder1
Parece que isso pode ser feito a partir do wmic
comando
Tente isto:
wmic product
Mostra uma lista de tudo instalado no computador
Fontes:
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 diz que é para Windows Vista e 7, mas também testei o wmic no Windows XP
Obtenha a lista de aplicativos instalados na linha de comando do Windows
Além disso, esta página explica que o método de verificação da entrada do registro pode não ser preciso
http://community.spiceworks.com/how_to/show/2238-how-add-remove-programs-works
Aqui estão mais algumas informações sobre o que mais pode ser feito usando o wmic:
http://betanews.com/2011/01/14/wmic-the-best-command-line-tool-you-ve-never-used/
Neste site, especificamente para o seu problema:
O programa também pode fornecer detalhes sobre muitos outros aspectos do seu sistema. Comandos como:
resumo da lista de produtos wmic
resumo da lista de serviços wmic
resumo da lista de processos wmic
resumo da lista de inicialização do wmic
listará seu software instalado, serviços, processos em execução e programas de inicialização do Windows, por exemplo.
Responder2
Não acho que você ficará satisfeito com nenhuma das abordagens do cmd, pois elas não serão completas. Se você concorda com o Powershell, isso me deu tudo:
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
}