Как найти местоположение программы в реестре, если я знаю MSI GUID?

StackOverflow https://stackoverflow.com/questions/3475793

  •  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\.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top