powershell을 사용하면 프로그램 추가/제거에서와 정확히 동일한 응용 프로그램 목록을 얻을 수 있습니다.

powershell을 사용하면 프로그램 추가/제거에서와 정확히 동일한 응용 프로그램 목록을 얻을 수 있습니다.

시스템에 설치된 응용 프로그램을 찾는 방법은 다양하지만 제가 아는 바로는 제어판 항목 프로그램 추가 제거와 정확히 동일한 목록을 반환하는 방법은 없습니다. 내가 시도한 몇 가지 방법은 다음과 같습니다.

  • Win32_Product 및 Win32Reg_AddRemovePrograms를 통한 WMI
  • x32 및 x64 분기 모두의 레지스트리

예를 들어 AR에는 217개의 항목이 있고

gwmi  Win32_Product

261개 항목을 반환합니다.

gp HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*, HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | ? {![string]::IsNullOrWhiteSpace($_.DisplayName) } | select DisplayName

119개 항목을 반환합니다.

 (gwmi Win32Reg_AddRemovePrograms) + (gwmi Win32Reg_AddRemovePrograms64) | sort DisplayName -Unique 

107개 항목을 반환합니다.

InstallLocation, 등 InstallSource을 포함하는 더 복잡한 필터를 사용하여 이를 해결하려고 했지만 InstallDate성공하지 못했습니다.

답변1

나에게 있어서 이것은 불행한 사건이다.콘웨이의 법칙. Windows는 수십 년의 역사와 수많은 움직이는 부품을 가진 매우 복잡한 OS입니다. 이것이 의미하는 바는 "내 컴퓨터에 모든 것이 설치되어 있습니까?"라는 질문과 같이 간단해 보이는 것입니다. 불행히도 매우 복잡해졌습니다. "설치된 소프트웨어"를 복잡하게 만드는 것은 그것이 여러 다른 소스에서 나온다는 것입니다. 64비트 소프트웨어, 32비트 소프트웨어, 특정 사용자용으로만 설치되는 소프트웨어, 모든 사용자용으로 설치되는 소프트웨어, 그룹 정책을 통해 설치되거나 할당된 소프트웨어 등이 있습니다.

다행스럽게도,Sysinternal의 프로세스 모니터당신에게 모두 공개할 수 있습니다. 실행하고 레지스트리 이벤트를 모니터링한 다음 프로그램 추가/제거 제어판 애플릿을 직접 클릭하고 Windows가 백그라운드에서 무엇을 하고 있는지 확인하세요.

다양한 출처에서 읽습니다.

HKLM\Software\Installer\Products
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\...
HKCU\Software\Microsoft\Windows\CurrentVersion\Installer\Managed\...
HKCU\Software\Microsoft\Installer\Products
HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\AppMgmt
HKLM\Software\Microsoft\Windows\CurrentVersion\Installer\UserData\...

그리고 더!

한편으로는 그것을~이다현재 로그온한 사용자 등을 기반으로 한 "보기"인 "프로그램 추가/제거"에 표시되는 내용을 정확하게 다시 작성하는 데 필요한 레지스트리 쿼리 순서를 정확하게 확인할 수 있습니다. 그것이 바로 그것이라는 것을 빨리 깨달아라.많은작업을 수행하고 프로그램 추가/제거의 정확한 보기를 재구성하는 것이 처음에는 그다지 중요하지 않았을 수도 있습니다. :)

관련 정보