특정 exe/dll이 어떤 설치 프로그램 패키지에 속하는지 확인하는 방법

특정 exe/dll이 어떤 설치 프로그램 패키지에 속하는지 확인하는 방법

MSI가 내 시스템에 특정 dll 또는 exe를 설치했는지 알고 싶습니다. 삭제된 파일이 설치된 패키지에 속해 있으면 Windows에서 삭제된 파일을 수정한다는 것을 알고 있습니다. 실제로 파일을 삭제하지 않고도 해당 정보를 쿼리할 수 있나요? 파일이 속한 패키지를 확인하는 도구나 Win32 API가 있습니까?

답변1

결국 방법이 있을 것 같습니다! 최근에 다음 하위 트리에서 Windows Installer가 설치한 파일에 대한 레지스트리 항목을 발견했습니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData

나는 저장된 정보를 사용하여 설치 프로그램에서 파일을 조회하는 작은 Python 스크립트를 작성했습니다.

> python windows-installer-file-search.py opus.dll
File: C:\Program Files (x86)\Mumble\opus.dll
Product: Mumble 1.2.13
Install user: S-1-5-18
Cached installer: C:\Windows\Installer\2f6b072.msi

여기에서 이용 가능합니다:https://github.com/Zero3/windows-installer-file-search

답변2

건초 더미에서 그럴듯한 바늘을 찾는 것만으로도 괜찮다면, 이 빠르고 더러운 남용은7-Zip작동합니다:

7z.exe l -an -air!C:\Windows\Installer\*.msi > needlelist.txt

needlelist.txt그런 다음 텍스트 편집기에서 열고 검색 needlename.dll하면 7-Zip에서 생성된 목록에서 해당 .msi 패키지를 찾을 수 있습니다.

(참고: 이 방법은 이라는 파일이 포함된 .msi 패키지를 알려주기 때문에 '더럽습니다' needlename.dll. 그러나 대부분의 사용 사례에서는 괜찮을 것입니다.)

관련 정보