Adakah cara untuk mengetahui MSI apa yang membuat file di sistem saya?

2

Katakanlah saya memiliki file di sistem saya yang diletakkan di sana oleh Windows Installer, tapi saya tidak yakin yang mana (dalam hal ini itu adalah salah satu dari banyak sub installer Microsoft SQL Server).

Adakah yang bisa saya tanyakan yang akan mengikat kembali file itu ke installer sehingga saya dapat menghapusnya?

Justin Dearing
sumber
Tidak; Tidak ada. Anda dapat mengetahui dari direktori mana ia berada dan menjalankan uninstaller di folder itu.
Ramhound
2
Pasti memungkinkan untuk meminta MSI untuk menemukan file dan folder yang didaftarkannya, tetapi saya tidak yakin apakah Anda memerlukan alat khusus untuk itu.
RJHunter
Bandingkan tanggal file dibuat dan pemasangan aplikasi apa pun (appwiz.cpl).
Biswapriyo

Jawaban:

0

Saya tidak berpikir Anda dapat melacak setiap file individu ke penginstal MSI. Namun, yang dapat Anda lakukan adalah melacak Lokasi Instal, jika dihuni oleh MSI dalam kunci registri ini

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\]

Ini adalah skrip yang dapat membantu Anda dengan itu.

#Get MOF File Method
$mof = @'
#PRAGMA AUTORECOVER

[dynamic, provider("RegProv"),
ProviderClsid("{fe9af5c0-d3b6-11ce-a5b6-00aa00680c3f}"),ClassContext("local|HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall")]
class InstalledProducts {
[key] string KeyName;
[read, propertycontext("DisplayName")] string DisplayName;
[read, propertycontext("DisplayVersion")] string DisplayVersion;
[read, propertycontext("InstallDate")] string InstallDate;
[read, propertycontext("InstallLocation")] string InstallLocation;
[read, propertycontext("InstallSource")] string InstallSource;
[read, propertycontext("Publisher")] string Publisher;
[read, propertycontext("EstimatedSize")] string EstimatedSize;
[read, propertycontext("UninstallString")] string UninstallString;
[read, propertycontext("WindowsInstaller")] string WindowsInstaller;
};

[dynamic, provider("RegProv"),
ProviderClsid("{fe9af5c0-d3b6-11ce-a5b6-00aa00680c3f}"),ClassContext("local|HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432node\\Microsoft\\Windows\\CurrentVersion\\Uninstall")]
class InstalledProducts32 {
[key] string KeyName;
[read, propertycontext("DisplayName")] string DisplayName;
[read, propertycontext("DisplayVersion")] string DisplayVersion;
[read, propertycontext("InstallDate")] string InstallDate;
[read, propertycontext("InstallLocation")] string InstallLocation;
[read, propertycontext("InstallSource")] string InstallSource;
[read, propertycontext("Publisher")] string Publisher;
[read, propertycontext("EstimatedSize")] string EstimatedSize;
[read, propertycontext("UninstallString")] string UninstallString;
[read, propertycontext("WindowsInstaller")] string WindowsInstaller;
};
'@
$mof | Out-file -encoding ascii $env:TMP\InstalledProductsMof.txt -Force
mofcomp.exe $env:TMP\InstalledProductsMof.txt 

Get-WmiObject -Namespace root\default -class InstalledProducts | Select DisplayName,DisplayVersion,InstallDate,InstallLocation, InstallSource,Publisher,EstimatedSize,UninstallString,WindowsInstaller 

# CLEAN-UP: Remove the WMI Classes you just created

Remove-WmiObject -Namespace root\default -class InstalledProducts 
Remove-WmiObject -Namespace root\default -class InstalledProducts32 
Sunny Chakraborty
sumber