Как найти местоположение программы в реестре, если я знаю MSI GUID?
-
28-09-2019 - |
Вопрос
Я установил некоторые MSI GUID (0733556C-37E8-4123-A801-D3E6C5151617). Программа, зарегистрированная в реестре: HKEY_LOCAL_MACHINE Программное обеспечение Microsoft Windows Centreversion Uninstall ()
Значение UninstallString = MSIEXEC.EXE / I (0733556C-37E8-4123-A801-D3E6C5151617)
Мой вопрос: насколько утилита Msiexec.exe знает имя и путь к файлу, который вы хотите запустить при удалении программ? Где в реестре эта информация можно найти?
Решение
Windows сохраняет информацию о конфигурации установщика Windows, скрытой и зашифрованной в реестре. Он не находится на самом деле с человеческим глазом, как другие части реестра.
Чтобы запросить / изменить / удалить эту информацию, вам нужно использовать функции MSI.
(Установщик Функция Справочник)
Для вашего конкретного вопроса, попробуйте функцию MSIGETPRODUCTICINFO.
Другие советы
Вот простая программа C #, которая использует MSIGETPRODUCTICINFO, так как William Learra говорит, чтобы получить фактическое расположение кэшированного установщика на диске.
class Program
{
static void Main(string[] args)
{
Int32 len = 512;
System.Text.StringBuilder builder = new System.Text.StringBuilder(len);
MsiGetProductInfo("{89C098E5-C108-49F9-9B1D-10503C6D8A05}", "LocalPackage", builder, ref len);
Console.WriteLine(builder.ToString());
Console.ReadLine();
}
[DllImport("msi.dll", CharSet = CharSet.Unicode)]
static extern Int32 MsiGetProductInfo(string product, string property, [Out] StringBuilder valueBuf, ref Int32 len);
}
Вы можете попробовать, из командной строки:
wmic product where "Name like '%your software here%'" get Name, Version, PackageCode
Существует бесплатная утилита от исследований программного обеспечения TARMA, которое я нашел полезным для этого. Избавиться от их сайт.
Вам не нужно какое-либо программное обеспечение. Это работает в Windows 10, и я думаю, что он действителен для Windows 7 также.
Если ваш код продукта 0733556C-37E8-4123-A801-D3E6C5151617. Попробуйте найти ключ C65533708E7332148A103D6E5C516171 (в основном это обратно), как только вы его нашли, просмотрите Shallproperties Subkey, если не существует, попробуйте найти другой результат. Как только вы нашли InstallProperties, откройте и найдите клавишу LocalPackage. И тогда у вас есть путь для Package MSI, который MSI сохраняет в качестве кеша при установке вашего приложения.
Предпосылка этого вопроса вводит в заблуждение, потому что удаление в реестре не используется при выполнении удаления. Продолжайте и измените строку, чтобы проверить это - это не будет использовать вашу измененную строку.
Хотя ссылки на вещи в реестре могут быть привлекательными, краткий ответ заключается в том, что данные установщика Windows в реестре - деталь реализации. Вопрос в основном спрашивает, как MsiconfigureProduct работает (.... installstate_absent ...) работает, и бессмысленно угадать на деталях реализации и где это может быть в реестре. Это API в ближайшее время вниз. Возможно, была фактическая задача, которую может быть захотет достичь, но это замаскируется вопрос о том, как удалить работу.
Это ключевые карты HKEY_CLASSES_ROOT\Installer\Products\
.