Как узнать guid программы

от admin

Find GUID From MSI File

How can I list the GUID of an installed program in Windows? Alternatively, is it easier to find the GUID if I have the MSI file?

I’m looking through the MSI file with Orca but not sure where to look to find the GUID.

5 Answers 5

The three main GUIDs of a Windows Installer database are the Package Code, ProductCode, and UpgradeCode. The first is stored in the summary information stream (View menu in Orca), and the others are stored in the Property table. (Other forms of databases such as merge modules and patches have similar GUIDs in similar places, such as the merge module’s GUID or the patch code GUID — each stored identically to the package code.)

To find them on a machine, you can look in the Uninstall key, where the ProductCode is often used. Or better yet, if you are looking to enumerate what is currently installed on the machine, you can call MsiEnumProducts.

There are several ways to locate the product GUID for installed packages. Please prefer option number 3.

The most common are:

  1. Check in the registry underneath the following base paths using regedit.exe. Search for the application name (or just browse through each sub folder untill you find it). When you have found it you can pass it to msiexec.exe:
  1. Check the locally cached MSI package in %SystemRoot%\Installer. This is a cached version of the original MSI that was originally used to install the product on your computer.
    • You will need a tool capable of opening MSI files. Here is a list and comparison of features: What installation product to use? InstallShield, WiX, Wise, Advanced Installer, etc.
    • An MSI is an MS SQL database in disguise, you should also be able to open it with any compatible MS SQL data viewer tool.
    • The free MSI tool «Orca» from the Windows SDK is the preferred one for this simple data retrieval task. It is quick, small and reliable.
    • Then follow Michael Uhrman’s advice from his answer above, and locate the package code in the summary stream, and the upgrade and the product code in the Property table. The package code is also visible from an MSI file’s property page in Windows Explorer.
  2. Use Powershell to list package information. I find this the easiest and most practical option. See this answer for a screenshot and a sample: How can I find the product GUID of an installed MSI setup?

If what you are trying to do is to uninstall the product in question, see this comprehesive uninstall MSI answer: Uninstalling an MSI file from the command line without using msiexec

If you feel more comfortable using VBScript instead of Powershell, please try this answer from Phil Wilson: how to find out which products are installed — newer product are already installed MSI windows

Как найти GUID продукта установленной установки MSI?

Мне нужно найти GUID продукта на установить файл MSI для выполнения обслуживания, такого как исправление, удаление, а также для целей аудита.

1 ответов

Короткая Версия

информация ниже значительно выросла с течением времени и, возможно, стала немного слишком сложной. как быстро получить коды продуктов? (четыре подхода):

1. Используйте Powershell «One-liner»

прокрутите вниз для скриншота и шаг за шагом. Отказ от ответственности также ниже — незначительные или умеренные риски, в зависимости от того, кто вы спрашиваете. Мне подходит. Любой самостоятельного ремонта срабатывает с помощью этой опции как правило, можно отменить. The проверка целостности пакета triggered добавляет некоторый журнал событий «шум», хотя. Примечание! IdentifyingNumber is the ProductCode (особенность WMI).

быстрый запуск Powershell: hold клавиша Windows , нажмите R , введите «powershell» и нажмите Enter

2. Использовать VBScript

описано ниже в разделе «альтернативные инструменты» (раздел 3). Этот параметр может быть безопасное чем Powershell по причинам, подробно описанным ниже. В сущности это (много)быстрее и не способен запускать MSI self-repair, так как он не проходит через WMI (он обращается к MSI COM API напрямую — на скорость). однако он более задействован, чем параметр Powershell (несколько строк кода).

3. Регистратура Поиск

некоторые клянутся, глядя вещи в реестре. Не мой рекомендуемый подход — мне нравится проходить через правильные API (или другими словами: вызовы функций ОС). Всегда есть странные исключения, учитываемые только внутренними компонентами API-реализации:

  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
  • HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall
  • HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall

4. Исходный файл MSI / Wix Source

вы можете найти Product Code in the Property table любого файла MSI (и любого другого свойства). Однако GUID может быть (редко) переопределен преобразованием, применяемым во время установки, и, следовательно, не соответствует GUID, под которым зарегистрирован продукт (подход 1 и 2 выше сообщит реальный код продукта — который зарегистрирован в Windows — в таких редких сценариях).

вам нужен инструмент для просмотра файлов MSI. См. в нижней части следующего ответа список бесплатных инструменты, которые вы можете скачать (или см. быстрый вариант ниже): как я могу сравнить содержимое двух (или более) файлов MSI?

обновление: для удобства и потребность в скорости :-), скачать SuperOrca без промедления и суеты от это прямая — скачать hotlink — инструмент достаточно хорош, чтобы выполнить работу — установить, открыть MSI и перейти прямо к таблица свойств и найти ProductCode строки (пожалуйста, всегда проверяйте вирус прямой-скачать hotlink-очевидно — вы можете использовать virustotal.com для этого-онлайн-сканирование с использованием десятков антивирусных и вредоносных программ для сканирования того, что вы загружаете).

и ниже вы найдете оригинальный ответ, который «органично» в много деталей.

может ознакомиться с «удаление пакетов MSI» раздел ниже, если это задача, которую вам нужно выполнять.

Получить Коды Продукта

  • не удается использовать PowerShell? В Разделе «Альтернатива Инструменты » раздел ниже.
  • хотите удалить? см. раздел «удаление пакетов MSI» ниже.

пожар Powershell (удерживая клавишу Windows, нажмите R, отпустите клавишу Windows, введите «powershell» и нажмите OK) и выполните приведенную ниже команду, чтобы получить список установленных пакетов MSI код продукции вместе с путь к пакету локального кэша и товар имя (разверните окно PowerShell, чтобы избежать усеченных имен).

перед запуском этой командной строки, пожалуйста, прочитайте отказ от ответственности ниже (ничего опасного, просто некоторые потенциальные неприятности). Раздел 3 в разделе «альтернативные инструменты» показывает альтернативный не-WMI способ получить ту же информацию с помощью VBScript. Если вы пытаетесь удалить пакет, ниже приведен раздел с некоторым образцом msiexec.команды исполняемые строки:

на выход должны будьте похожи на это:

внимание! по какой-то странной причине «ProductCode» называется «IdentifyingNumber» в WMI. Другими словами — на картинке над номером is код продукта.

Если вам нужно запустите этот запрос удаленно против множества удаленных компьютеров в разделе » Получить Коды Продуктов С Пульта Дистанционного Управления Компьютер!—41—> раздел» ниже.

отказ от ответственности (важно, пожалуйста, прочитайте перед выполнением команды!): Из-за странного дизайна Microsoft любой вызов WMI Win32_Product (как и команда PowerShell ниже) вызовет проверка пакет недвижимости. Кроме того, что медленно, это может в редких случаях запустите саморемонт MSI. Это может быть небольшой пакет или что-то огромная, как Visual Studio. В большинстве случаев этого не происходит — но есть риск. не запускайте эту команду прямо перед важным встреча — это не опасно (это для чтения), но это может приводят к длительному ремонту в очень редких случаях (я думаю, вы можете отменить self-repair также-если активно не предотвращен рассматриваемым пакетом, но он перезапустится, если вы вызовете Win32_Product снова и это будет продолжаться, пока вы не позволите закончить саморемонт — иногда это может продолжаться, даже если вы это позволите конец:как определить, что вызывает повторный саморемонт установщика Windows?).

и просто для записи: некоторые люди сообщают, что их журналы событий заполняются записями Msiinstaller EventID 1035 (см. ответ начальника кода) — по-видимому, вызвано запросами WMI к классу Win32_Product (лично я никогда этого не видел). Это не непосредственно связано с командой Powershell, предложенной выше, это в контексте общего использование класса Wim Win32_Product.

вы также можете получить результат в виде списка (вместо таблицы):

в этом случае вывод аналогичен этому:

enter image description here

Получить Коды Продуктов С Удаленного Компьютера

теоретически вы должны просто указать имя удаленного компьютера как часть самой команды. Вот та же команда, что и выше, настроенная для запуска на машине «RemoteMachine» ( добавить):

это может сработать, если вы работаете с правами администратора домена в соответствующем домене. В среде рабочей группы (небольшой офис / домашняя сеть), вероятно, необходимо добавить учетные данные пользователя непосредственно к вызовам WMI, чтобы заставить его работать.

Читать:
Как защитить презентацию от копирования и редактирования

кроме того, на удаленные подключения в WMI влияет (по крайней мере)Брандмауэр Windows, настройки DCOM и Контроль Учетных Записей Пользователей (UAC) (плюс любые дополнительные факторы, отличные от Microsoft-например реальные брандмауэры, сторонние программные брандмауэры, программное обеспечение безопасности различных видов, etc. ). Будет ли она работать или нет зависит от вашей точной настройки.

обновление: An обширный раздел о удаленном запуске WMI можно найти в этом ответе:как найти код обновления для установленного файла MSI?. Появляется правило брандмауэра и подавление приглашения UAC через настройку реестра может заставить вещи работать в сетевой среде рабочей группы. Не рекомендуется изменять безопасность, но это сработало для меня.

Альтернативные Инструменты

PowerShell требуется .NET framework будет установлен (в настоящее время в версии 3.5.1 кажется? Октября 2017 года). Само приложение PowerShell также может отсутствовать С компьютера, даже если установлен .NET. Наконец, я считаю, что PowerShell может быть отключено или заблокировано различными системными политиками и привилегиями.

если это так, вы можете попробовать несколько других способов получить коды продукта. Моя предпочтительная альтернатива VBScript — оно быстр и гибок (но может также быть заблокирован на определенных машинах, и сценарии всегда немного более задействованы, чем использование инструментов).

  1. С встроенный инструмент Windows WMI: wbemtest.exe .
    • запуск wbemtest.exe (удерживайте клавишу Windows, нажмите R, отпустите клавишу Windows, введите » wbemtest.exe» и нажмите OK).
    • клик подключиться а то OK (по умолчанию пространство имен root\cimv2) и нажмите «подключиться» снова.
    • нажмите «запрос » и введите это команда WQL (вкус SQL): SELECT IdentifyingNumber,Name,Version FROM Win32_Product и нажмите «Использовать» (или эквивалент — инструмент будет локализован).
    • пример вывода скриншота (усеченный). Не самое приятное форматирование, но вы можете получить необходимые данные. IdentifyingNumber-это продукт MSI код:

wbemtest.exe

затем вы можете попробовать пользовательский, более полнофункциональный инструмент WMI, такой как WMIExplorer.exe

  • это не входит в Windows. Однако, это очень хороший инструмент,. Рекомендуемый.
  • проверить его на: https://github.com/vinaypamnani/wmie2/releases
  • запустите инструмент, нажмите Connect, дважды щелкните КОРЕНЬ\ПРОСТРАНСТВЕ ИМЕН CIMV2
  • от » запрос«, введите следующий запрос SELECT IdentifyingNumber,Name,Version FROM Win32_Product и нажмите «Выполнить».
  • скриншот пропущен, приложение требует слишком много места на экране.
  • скопировать ниже скрипта и вставьте в *.файл VBS на рабочем столе, и попробуйте запустить его двойным нажатием. Ваш рабочий стол должен быть доступен для записи, или вы можете использовать любое другое место для записи.
  • это не большой VBScript. краткость была предпочтена над обработкой ошибок и полнотой, но он должен выполнять работу с минимальной сложностью.
  • выходной файл создается в папке, из которой запускается скрипт (папка должна быть доступна для записи). Выходной файл называется msiinfo.csv .
  • дважды щелкните файл, чтобы открыть в приложении электронной таблицы, выберите запятую в качестве разделителя при импорте — или-просто откройте файл в блокноте или любом текстовом средстве просмотра.
  • открыть в электронной таблице позволит расширенные функции сортировки.
  • этот скрипт можно легко адаптировать, чтобы показать значительное количество дополнительной информации об установке MSI. Демонстрацию этого можно найти здесь:как узнайте, какие продукты установлены — новые продукты уже установлены MSI windows.

1: Basic, интерактивное удаление без регистрации (быстро и легко):

Быстрое Объяснение Параметров:

вы также можете включить (подробный) ведение журнала и работать в автоматическом режиме, если хотите, что приведет нас к опции 2:

2: бесшумное удаление с подробным журналированием (лучше для пакетных файлов):

Быстрое Объяснение Параметров:

есть полный справочник для MSI uninstall здесь (различные способы удаления пакетов MSI): удаление MSI-файла из командной строки без использования msiexec. Существует множество различных способов удаления.

если вы не написание пакетного файла, пожалуйста, посмотрите на раздел 3 выше, связанный ответ для нескольких распространенных и стандартных вариантов командной строки удаления.

получение других свойств / информации MSI (f.обновление ex Код)

обновление: пожалуйста, найдите новый ответ о том, как найти код обновления для установленных пакетов вместо того, чтобы вручную искать код в файлы MSI. Для установленные пакеты это намного надежнее. Если пакет не установленный, вам все равно нужно посмотреть в файле MSI (или исходном файле используется для компиляции MSI), чтобы найти код обновления. Оставив в старой части ниже:

если вы хотите получить UpgradeCode или другие свойства MSI, вы можете открыть кэшированную установку MSI для продукта из места, указанного в «LocalPackage » на изображении выше (что-то вроде: C:\WINDOWS\Installerc080ae.msi — это имя шестнадцатеричного файла, уникальное для каждой системы). Затем вы смотрите в «таблица свойств » для UpgradeCode (возможно, что UpgradeCode будет переопределен в transform-to убедитесь, что вы получили правильное значение, необходимое для получения кода программно из системы — я предоставлю сценарий для этого в ближайшее время. Однако,UpgradeCode, найденный в кэшированном MSI, как правило, правильный).

чтобы открыть кэшированные файлы MSI, используйте косатка или другой упаковочный инструмент. Вот обсуждение различных инструментов (любой из них будет делать):какой продукт установки использовать? InstallShield, WiX, Мудрый, Расширенный Установки и т. д.. Если у вас нет такого инструмента установлен, ваш лучший выбор может быть попробовать Супер Косатка (он прост в использовании, но не широко протестирован мной).

обновление: вот новый ответ с информацией о различных свободных продуктов, которые вы можете использовать для просмотра файлов MSI: как я могу сравнить содержимое двух (или более) файлов MSI?

если у вас установлена Visual Studio, попробуйте поискать Orca-x86_en-us.msi — под Program Files (x86) — и установите его (это собственный, официальный MSI viewer и редактор Microsoft). Затем найдите Orca в меню Пуск. Go time in no time : -). Технически Orca устанавливается как часть Windows SDK (не Visual Studio), но Windows SDK поставляется в комплекте с установкой Visual Studio. если у вас не установлена Visual Studio, возможно вы знаете, кто делает? Просто попросите их найти этот MSI и отправить вам (это крошечный файл с половиной Мб) — должно занять несколько секунд. обновление: вам нужно несколько файлов CAB, а также MSI — они находятся в той же папке, где находится MSI. Если нет, вы всегда можете скачать Windows SDK (это бесплатно, но это большой — и все, что вы установите замедлит ваш компьютер). Я не уверен, какая часть SDK устанавливает ORCA MSI. Если вы это сделаете, просто отредактируйте и добавьте детали здесь.

  • вот более Полная статья по вопросу удаления MSI: удаление MSI-файла из командной строки без использования msiexec
  • вот аналогичная статья с дополнительные опции для получения информации MSI с помощью реестра или кэшированного msi:найти GUID из файла MSI?

Похожие темы (для справки и легкого доступа — я должен очистить этот список):

Админко

В данной статье я приведу один из методов извлечения цифрового идентификатора приложения из реестра Windows.Правильное название: статистически уникальный 128-битный идентификатор GUID. Если Вы знаете GUID,то можете открыть любой компонент Windows, shell. GUID где — shell — интерпретатор команд Windows.

Пример вызова компонента Windows диспетчер устройств:
shell. 74246bfc-4c96-11d0-abef-0020af6b0b7a,для запуска необходимо вызвать диалоговое окно «Выполнить» используя клавиши  Win + R, прописать данный код и нажать«OK» Все значения GUIDхранятся в разделе реестра HKEY_CLASSES_ROOTCLSID. Зайдя в CLSID поиск, лучше всего производить методом перебора значений для правильного определения GUID в  значении должен присутствовать подраздел  ShellFolder. Для поиска нужного GUID необходимо иметь время и терпение. Итак, всё по порядку.

Как узнать GUID текущей базы данных?

(0) Как я понимаю, на уровне платформы такого понятия нет. Это что-то из БСП или КД3?

(5) Речь про уид конкретной ИБ.

(6) В моём случае речь о файловой базе.

(9) (10) (11) Это гуид в конкретном файле, называть его "уид конкретной ИБ" не очень корректно.

(0) ты про "это" спрашивал?

(14) он меняется при добавлении/удалении базы. Кроме того база может быть прописана в списке несколько раз.

Вот сейчас добавил базу второй раз и получил новый гуид в файле, какой из них на сервере?

(22) Ну после первого запуска база с БСП спросит "база перемещена?" и возможно поменяет (1).

Так что (1) весьма подходит, вопрос только в том что нужно ТС

(23) "содержимое константы ИдентификаторИнформационнойБазы"

У меня кстати нет такой в самописке)

(27) "Вариант Б: "защита авторского права" — обработка написана для конкретной базы заказчика так, чтобы она не работала, если украдут/передадут/сольют и т.д."

Но выходит, что после перемещения базы, даже законно используемая обработка перестанет работать.

Похожие статьи