Из какой базы данных Windows или источника данных Win32_Product извлекает информацию, если не из реестра? Например,
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\ files для клиента (резервное копирование)
- копаться в реестре и удалять записи, такие как: {HKCU | HKLM}\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ Uninstall (Установка и удаление программ)
- отмена регистрации клиентских сервисов с помощью "sc delete"
- Удаление папки C:\ Windows\ Installer\ {GUID} (резервная копия)
Запрос к Win32_Product показывает, что программное обеспечение все еще установлено, но, разумеется, «Установка и удаление программ» не выполняется (так как я удалил записи реестра).
Я могу более подробно рассказать о том, что я пробовал, прежде чем идти по ручному маршруту, если это необходимо.