ฉันต้องการทราบว่า MSI ติดตั้ง dll หรือ exe ในระบบของฉันอย่างไร ฉันรู้ว่า Windows แก้ไขไฟล์ที่ถูกลบหากเป็นของแพ็คเกจที่ติดตั้ง ฉันสามารถสืบค้นข้อมูลนั้นโดยไม่ลบไฟล์ได้หรือไม่? มีเครื่องมือหรือ Win32 API เพื่อตรวจสอบไฟล์ที่เป็นของแพ็คเกจหรือไม่?
ฉันต้องการทราบว่า MSI ติดตั้ง dll หรือ exe ในระบบของฉันอย่างไร ฉันรู้ว่า Windows แก้ไขไฟล์ที่ถูกลบหากเป็นของแพ็คเกจที่ติดตั้ง ฉันสามารถสืบค้นข้อมูลนั้นโดยไม่ลบไฟล์ได้หรือไม่? มีเครื่องมือหรือ Win32 API เพื่อตรวจสอบไฟล์ที่เป็นของแพ็คเกจหรือไม่?
คำตอบ:
ดูเหมือนว่าอาจจะมีวิธีหลังจากทั้งหมด! ฉันเพิ่งค้นพบรายการรีจิสทรีสำหรับไฟล์ที่ติดตั้งโดย Windows Installers ภายใต้ทรีย่อยต่อไปนี้:
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
หากคุณโอเคกับเพียงแค่การหาเข็มในกองหญ้าที่เป็นไปได้นี้การละเมิดรวดเร็วและสกปรกของ7-Zipจะทำงาน:
7z.exe l -an -air!C:\Windows\Installer\*.msi > needlelist.txt
จากนั้นเปิดneedlelist.txt
ในตัวแก้ไขข้อความค้นหาneedlename.dll
และคุณจะพบแพ็คเกจ. msi ที่เกี่ยวข้องในรายการที่สร้างโดย 7-Zip
(หมายเหตุ: วิธีการนี้ 'สกปรก' เพราะเพียงบอกคุณว่าแพคเกจ. msi ที่มีไฟล์ชื่อneedlename.dll
แต่อาจเป็นเรื่องที่ดีสำหรับกรณีส่วนใหญ่ที่ใช้)