Как найти расположение программы в реестре, если я знаю MSI GUID?
Я установил некоторые MSI с GUID (0733556C-37E8-4123-A801-D3E6C5151617). Программа зарегистрирована в реестре: HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows CurrentVersion Uninstall ()
значение UninstallString = MsiExec.exe / I (0733556C-37E8-4123-A801-D3E6C5151617)
мой вопрос: как утилита MsiExec.exe знает имя и путь к файлу, который вы хотите запустить при удалении программ? Где в реестре может находиться эта информация нашли?
7 ответов
Windows хранит информацию о конфигурации установщика Windows скрытой и зашифрованной в реестре. Он не просматривается человеческим глазом, как и другие части реестра.
чтобы запросить / изменить / удалить эту информацию, вам нужно использовать функции MSI.
(Ссылка На Функцию Установщика)
для вашего конкретного вопроса попробуйте функцию MsiGetProductInfo.
вот простая программа c#, которая использует MsiGetProductInfo, как говорит Уильям Лира, чтобы получить фактическое местоположение кэшированного установщика на диске.
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 Software Research, которую я нашел полезной для этого. Получить его от их сайт.
вам не нужно никакое программное обеспечение. Это работает в Windows 10,и я думаю, что это действительно для windows 7.
Если ваш код продукта 0733556C-37E8-4123-A801-D3E6C5151617. Попробуйте найти ключ C65533708E7332148A103D6E5C516171 (в основном это наоборот), как только вы его нашли, найдите подраздел InstallProperties, если он не существует, попробуйте найти другой результат. После того, как вы нашли InstallProperties, откройте и найдите ключ LocalPackage. И тогда у вас есть путь для msi packeage, который MSI сохраняет как кэш при установке приложения.
предпосылка этого вопроса вводит в заблуждение, потому что средство в реестре не используется при удалении. Продолжайте и измените строку, чтобы проверить это - она не будет использовать измененную строку.
хотя ссылки на материал в реестре могут быть привлекательными, короткий ответ заключается в том, что данные установщика Windows в реестре-это детали реализации. Вопрос в основном спрашивает, как MsiConfigureProduct(....INSTALLSTATE_ABSENT...) работает, и это бессмысленно чтобы угадать детали реализации и где она может быть в реестре. Это Апис на всем пути вниз. Возможно, была фактическая задача, которую плакат, возможно, хотел выполнить, но он замаскирован вопросом о том, как работают деинсталляции.