Ich versuche, alle installierten Anwendungen aufzulisten, die in der Liste „Programme hinzufügen/entfernen“ (WinXP/Win7) über die Befehlszeile angezeigt werden. Ich verstehe, dass es bei Win7 im CP „Programme und Funktionen“ heißt.
Ich habe wmic ausprobiert, aber das listet nur Programme auf, die mit MSIs installiert wurden. Ich habe versucht, die Registrierung abzufragen (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall und auch wow6432node).
Ich kann Spotify immer noch nicht abfangen (gutes Beispiel); es erscheint im Abschnitt „Hinzufügen/Entfernen“, aber nicht an diesen Stellen.
Irgendwelche Gedanken?
-Dom
Antwort1
Dies lässt sich anscheinend mit dem folgenden wmic
Befehl erledigen
. Versuchen Sie Folgendes:
wmic product
Zeigt eine Liste aller auf dem Computer installierten
Elemente. Quellen:
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
Auf dieser Seite steht, dass es für Windows Vista und 7 ist, aber ich habe wmic auch unter Windows XP getestet
Abrufen einer Liste der installierten Anwendungen über die Windows-Befehlszeile
Außerdem wird auf dieser Seite erklärt, dass die Methode zur Überprüfung des Registrierungseintrags möglicherweise nicht genau ist
http://community.spiceworks.com/how_to/show/2238-how-add-remove-programs-works
Hier finden Sie weitere Informationen dazu, was Sie sonst noch mit wmic tun können:
http://betanews.com/2011/01/14/wmic-das-beste-command-line-tool-das-sie-ve-never-used/
Von dieser Website, speziell für Ihr Problem:
Das Programm kann auch Details zu vielen anderen Aspekten Ihres Systems liefern. Befehle wie:
kurze WMIC-Produktliste
Kurze Liste der WMIC-Dienste
Kurze WMIC-Prozessliste
kurze WMIC-Startup-Liste
listet beispielsweise Ihre installierte Software, Dienste, laufenden Prozesse und Windows-Startprogramme auf.
Antwort2
Ich glaube nicht, dass Sie mit einem der cmd-Ansätze zufrieden sein werden, da sie nicht vollständig sind. Wenn Sie mit Powershell zufrieden sind, hat mir das alles gegeben:
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
}