如果不是注册表,Win32_Product 会从哪个 Windows 数据库或数据源获取信息?例如,
if(Get-WmiObject -Class Win32_Product -Filter "Name like '%PRODUCT%'") { echo Write-Host "PRODUCT IS Installed" exit 0; }
返回有关已安装产品的大量信息(即使该方法存在其他问题https://stackoverflow.com/questions/25268491/alternative-to-win32-product)
现在我很好奇,但我无法找到有关 wmi 实际上从哪里获取这些信息的详细信息。
背景:
在遇到备份客户端的卸载程序损坏且与我需要安装的另一个备份客户端冲突的小麻烦后,我最终尝试手动卸载该客户端,其中包括:
- 移动/删除客户端的 c:\Program Files\ 文件(已备份)
- 挖掘注册表并删除条目,例如:{HKCU|HKLM}\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall(添加/删除程序)
- 使用“sc delete”取消注册客户端服务
- 删除 C:\Windows\Installer\{GUID} 文件夹(已备份)
对 Win32_Product 的查询显示该软件仍在安装中,当然添加/删除程序则不然(因为我删除了注册表项)。
如果需要的话,我可以更详细地介绍在采取手动路线之前我尝试过的内容。