Функция MsiEnumProductsExW (msi.h)
Функция MsiEnumProductsEx перечисляет один или все экземпляры продуктов, которые в настоящее время объявлены или установлены в указанных контекстах. Эта функция заменяет MsiEnumProducts.
Синтаксис
UINT MsiEnumProductsExW(
[in, optional] LPCWSTR szProductCode,
[in] LPCWSTR szUserSid,
[in] DWORD dwContext,
[in] DWORD dwIndex,
[out, optional] WCHAR [39] szInstalledProductCode,
[out, optional] MSIINSTALLCONTEXT *pdwInstalledContext,
[out, optional] LPWSTR szSid,
[in, out, optional] LPDWORD pcchSid
);
Параметры
[in, optional] szProductCode
Код продукта GUID перечисляемого продукта. Перечисляются только экземпляры продуктов в область контекста, заданного параметрами szUserSid и dwContext. Для этого параметра можно задать значение NULL , чтобы перечислить все продукты в указанном контексте.
[in] szUserSid
Строка, завершающаяся значением NULL, указывающая идентификатор безопасности (SID), ограничивающий контекст перечисления. Специальная строка sid s-1-1-0 (Все) указывает перечисление для всех пользователей в системе. Значение sid, отличное от s-1-1-0, считается идентификатором безопасности пользователя и ограничивает перечисление текущим пользователем или любым пользователем в системе. Для этого параметра можно задать значение NULL, чтобы ограничить область перечисления текущим пользователем.
[in] dwContext
Ограничивает перечисление контекстом. Этот параметр может быть любым или сочетанием значений, показанных в следующей таблице.
[in] dwIndex
Указывает индекс извлекаемого продукта. Этот параметр должен быть равен нулю для первого вызова функции MsiEnumProductsEx , а затем увеличиваться для последующих вызовов. Индекс следует увеличивать, только если предыдущий вызов вернул ERROR_SUCCESS. Поскольку продукты не заказываются, любой новый продукт имеет произвольный индекс. Это означает, что функция может возвращать продукты в любом порядке.
[out, optional] szInstalledProductCode
Строка TCHAR , завершающаяся значением NULL, которая предоставляет идентификатор GUID ProductCode перечисляемого экземпляра продукта. Этот параметр может принимать значение NULL.
[out, optional] pdwInstalledContext
Возвращает контекст перечисляемого экземпляра продукта. Выходное значение может быть MSIINSTALLCONTEXT_USERMANAGED, MSIINSTALLCONTEXT_USERUNMANAGED или MSIINSTALLCONTEXT_MACHINE. Этот параметр может принимать значение NULL.
[out, optional] szSid
Выходной буфер, получающий строковый идентификатор безопасности учетной записи, в которой существует этот экземпляр продукта. Этот буфер возвращает пустую строку для экземпляра, установленного в контексте для каждого компьютера.
Этот буфер должен быть достаточно большим для хранения идентификатора безопасности. Если буфер слишком мал, функция возвращает ERROR_MORE_DATA и присваивает *pcchSid числу TCHAR в sid, не включая завершающий символ NULL.
Если szSid имеет значение NULL , а pcchSid — допустимый указатель, функция возвращает ERROR_SUCCESS и задает *pcchSid число TCHAR в значении, не включая завершающее значение NULL. Затем функцию можно вызвать еще раз, чтобы получить значение, при этом буфер szSid достаточно большой, чтобы содержать *pcchSid + 1 символ.
Если для szSid и pcchSid задано значение NULL, функция возвращает ERROR_SUCCESS, если значение существует, без извлечения значения.
[in, out, optional] pcchSid
При вызове функции этот параметр должен быть указателем на переменную, указывающую количество TCHAR в буфере szSid . При возврате функции для этого параметра устанавливается размер запрошенного значения независимо от того, копирует ли функция значение в указанный буфер. Размер возвращается как число TCHAR в запрошенном значении, не включая завершающий символ NULL.
Этот параметр может иметь значение NULL , только если szSid также имеет значение NULL, в противном случае функция возвращает ERROR_INVALID_PARAMETER.
Возвращаемое значение
Функция MsiEnumProductsEx возвращает одно из следующих значений.
Код возврата | Описание |
---|---|
|
Если область включает пользователей, отличных от текущего пользователя, вам потребуются права администратора. |
|
Данные конфигурации повреждены. |
|
В функцию передан недопустимый параметр. |
|
Больше нет продуктов для перечисления. |
|
Перечисляется продукт. |
|
Параметр szSid слишком мал, чтобы получить идентификатор безопасности пользователя. |
|
Продукт не установлен на компьютере в указанном контексте. |
|
Непредвиденный внутренний сбой. |
Комментарии
Для перечисления продуктов приложение должно сначала вызвать функцию MsiEnumProductsEx с параметром iIndex , равным нулю. Затем приложение должно увеличить параметр iProductIndex и вызывать MsiEnumProductsEx , пока оно не вернет ERROR_NO_MORE_ITEMS и больше не будет перечислять продукты.
При выполнении нескольких вызовов MsiEnumProductsEx для перечисления всех продуктов каждый вызов должен выполняться из одного потока.
Пользователь должен иметь права администратора для перечисления продуктов во всех учетных записях пользователей или в учетной записи пользователя, отличной от текущей учетной записи пользователя. Перечисление пропускает продукты, которые объявляются только (например, продукты, не установленные) в неуправляемом контексте для каждого пользователя при перечислении для всех пользователей или пользователей, отличных от текущего пользователя.
Используйте MsiGetProductInfoEx для получения состояния или других сведений о каждом экземпляре продукта, перечисляемом msiEnumProductsEx.
Примечание
Заголовок msi.h определяет MsiEnumProductsEx как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Установщик Windows 5.0 в Windows Server 2012, Windows 8, Windows Server 2008 R2 или Windows 7. Установщик Windows 4.0 или Установщик Windows 4.5 в Windows Server 2008 или Windows Vista. Установщик Windows 3.0 или более поздней версии в Windows Server 2003 или Windows XP. Сведения о минимальном пакете обновления Windows, необходимом для версии установщика Windows, см. в статье Требования к установщику Windows Run-Time. |
Целевая платформа | Windows |
Header | msi.h |
Библиотека | Msi.lib |
DLL | Msi.dll |
См. также раздел
Не поддерживается в установщике Windows 2.0 и более ранних версий