W systemie Windows, jak mogę uzyskać listę wszystkich zainstalowanych programów za pomocą skryptu?

1

Próbuję dowiedzieć się, jak uzyskać listę wszystkich zainstalowanych aplikacji za pomocą skryptu. My O / S to Windows 7 x64.

Znalazłem kilka rzekomych mechanizmów generujących listę zainstalowanych aplikacji, jednak odkryłem, że użycie rejestru, wmic itp. Tworzy listę, która nie pasuje do listy znajdującej się w Panelu sterowania & gt; Programy i funkcje (w wygenerowanych listach brakuje programów, które pojawiają się w Panelu sterowania).

Zasadniczo chcę po prostu znaleźć sposób na pobranie dokładnej listy, która jest wyświetlana w Panelu sterowania w obszarze Programy i funkcje i albo wyeksportować ją, albo uzyskać dostęp do tej listy programowo.

Znalazłem stary wątek w TechNet, który domaga się dokładnie tego samego, ale niestety nigdy nie dostarczono żadnego działającego rozwiązania. OP w tym wątku ma dokładnie te same problemy, co ja.

https://social.technet.microsoft.com/Forums/windows/en-US/19c1f1cf-3a3b-4a66-b830-d8a68c5d493d/get-list-of-installed-program-exactly-as-in-control-panel? forum = w7itprogeneral

Mam nadzieję, że nie oznacza to, że jest to niemożliwe. Jeśli sam komputer wyświetla informacje, które chcę, wydaje się, że musi być jakiś sposób, aby uzyskać do niego dostęp, chyba że jest zamknięty w jakimś zamkniętym interfejsie API systemu Windows.

vrtigo1
źródło
2
Sprawdziłeś odpowiedzi na to pytanie StackOverflow ? Powinni pokazać, gdzie są przechowywane informacje o instalacji i jak je uzyskać, aby twoje pytanie mogło zostać ograniczone do „w jaki sposób mogę uzyskać dostęp do tych zasobów za pomocą skryptu?” Jeśli trochę studiujesz i napiszesz scenariusz, ludzie na Przepełnienie stosu może ci pomóc, jeśli w którymś momencie utkniesz.
miroxlav
Zasadniczo lista dodawania / usuwania oprogramowania jest dokładnie tym, co jest przechowywane w: OPROGRAMOWANIE Microsoft Windows CurrentVersion Deinstalacja zgodnie z opisem (co może się znacznie różnić od tego, co jest naprawdę zainstalowane, nikt nie jest zmuszony do wprowadzania wpisów), Jeśli zobaczysz Różnica polega na tym, że podejrzewam, że masz 64-bitowe okna. W tym przypadku istnieją 3 różne wersje, jedna w HKCU OPROGRAMOWANIE w HKLM OPROGRAMOWANIE i jedna w HKLM OPROGRAMOWANIE Wow6432Node. Iirc Windows GUI pokaże je wszystkie razem
Syberdoor
Co jest nie tak z tym Get-WmiObject -Class Win32_Product | Select-Object -Property Name autor tego wątku nie jest pewien, dlaczego nie można użyć tego polecenia. Generuje listę z dokładnymi informacjami.
Ramhound
Get-WmiObject -Class Win32_Product | Select-Object -Property Name - jak zauważono, nie zwraca listy pasującej do panelu sterowania. Brakuje elementów. Interesująca jest informacja o posiadaniu trzech oddzielnych sekcji w rejestrze, które pokazują informacje o odinstalowywaniu oprogramowania, i sprawdzę, czy mogę sondować wszystkie trzy, połączyć, a następnie deduplikować tę listę. Dzięki!
vrtigo1
Czy możesz użyć Win32Reg_AddRemovePrograms i Win32Reg_AddRemovePrograms64 klasy?
Ramhound