5

Я пытаюсь перечислить все установленные приложения, которые отображаются в списке добавления / удаления программ (WinXP / Win7) через командную строку. Я понимаю, что для Win7 это называется "Программы и компоненты" от cp.

Я пробовал wmic, но в нем перечислены только программы, установленные с использованием MSI. Я попытался запросить реестр (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall & также wow6432node).

Я все еще не могу поймать в ловушку Spotify (хороший экзамен); он появляется в разделе добавления / удаления, но не в этих местах.

Какие-нибудь мысли?

-Dom

2 ответа2

5

Похоже, это можно сделать с помощью команды 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/ библиотека / bb742610.aspx # ECAA

На этой странице написано, что это для Windows Vista и 7, но я также проверил wmic на Windows XP
Получить список установленных приложений из командной строки 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-you-ve-never-used/
С этого сайта, специально для вашей проблемы:

Программа также может предоставить подробную информацию о многих других аспектах вашей системы. Команды как:

краткий список продуктов wmic

краткий список сервисов wmic

краткий список процессов

краткий список запуска wmic

например, отобразит список установленного программного обеспечения, служб, запущенных процессов и программ запуска Windows.

0

Я не думаю, что вы будете удовлетворены любым из подходов 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
}

pause

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .