Функция MsiEnumClientsExA (msi.h)

Функция MsiEnumClientsEx перечисляет установленные приложения, использующие указанный компонент. Функция получает код продукта для приложения при каждом вызове.

Установщик Windows 4.5 или более ранней версии: Не поддерживается. Эта функция доступна начиная с установщика Windows 5.0.

Синтаксис

UINT MsiEnumClientsExA(
  [in]                LPCSTR            szComponent,
  [in, optional]      LPCSTR            szUserSid,
  [in]                DWORD             dwContext,
  [in]                DWORD             dwProductIndex,
  [out, optional]     CHAR [39]         szProductBuf,
  [out, optional]     MSIINSTALLCONTEXT *pdwInstalledContext,
  [out, optional]     LPSTR             szSid,
  [in, out, optional] LPDWORD           pcchSid
);

Параметры

[in] szComponent

GUID кода компонента, который идентифицирует компонент. Функция перечисляет приложения, использующие этот компонент.

[in, optional] szUserSid

Строковое значение, завершающееся значением NULL, содержащее идентификатор безопасности (SID). Перечисление приложений распространяется на пользователей, идентифицируемых этим идентификатором безопасности. Специальная строка sid s-1-1-0 (Все) перечисляет все приложения для всех пользователей в системе. Значение SID, отличное от s-1-1-0, указывает идентификатор безопасности пользователя для конкретного пользователя и перечисляет экземпляры приложений, установленных указанным пользователем.

Тип идентификатора безопасности Значение
NULL
Указывает пользователя, выполнившего вход в текущий момент.
Идентификатор безопасности пользователя
Задает перечисление для конкретного пользователя. Примером идентификатора безопасности пользователя является S-1-3-64-2415071341-1358098788-3127455600-2561.
s-1-1-0
Задает перечисление для всех пользователей в системе.
 
Примечание Специальная строка sid s-1-5-18 (System) не может использоваться для перечисления приложений, которые существуют в контексте установки на компьютере. При установке значения SID s-1-5-18 возвращается ERROR_INVALID_PARAMETER. Если параметру dwContext присвоено значение только MSIINSTALLCONTEXT_MACHINE , значение szUserSid должно иметь значение NULL.
 

[in] dwContext

Флаг, расширяющий перечисление до экземпляров приложений, установленных в указанном контексте установки. Перечисление включает только экземпляры приложений, установленных пользователями, идентифицируемыми szUserSid.

Это может быть сочетание следующих значений.

Контекст Значение
MSIINSTALLCONTEXT_USERMANAGED
1
Включите приложения, установленные в контексте установки для каждого пользователя.
MSIINSTALLCONTEXT_USERUNMANAGED
2
Включите приложения, установленные в контекст неуправляемой установки для каждого пользователя.
MSIINSTALLCONTEXT_MACHINE
4
Включите приложения, установленные в контекст установки для каждого компьютера. Если параметру dwInstallContext присвоено значение только MSIINSTALLCONTEXT_MACHINE , значение параметра szUserSID должно иметь значение NULL.

[in] dwProductIndex

Указывает индекс извлекаемого приложения. Значение этого параметра должно быть равно нулю (0) при первом вызове функции. Для каждого последующего вызова индекс должен увеличиваться на 1. Индекс следует увеличивать, только если предыдущий вызов функции возвращает ERROR_SUCCESS.

[out, optional] szProductBuf

Строковое значение, получающее код продукта для приложения. Длина буфера в этом расположении должна быть достаточно большой, чтобы вместить строковое значение, завершающееся значением NULL, содержащее код продукта. Первые 38 символов TCHAR получают GUID для компонента, а 39-й — завершающий символ NULL.

[out, optional] pdwInstalledContext

Флаг, предоставляющий контекст установки приложения.

Это может быть сочетание следующих значений.

Контекст Значение
MSIINSTALLCONTEXT_USERMANAGED
1
Приложение устанавливается в контексте установки для каждого пользователя.
MSIINSTALLCONTEXT_USERUNMANAGED
2
Приложение устанавливается в контексте неуправляемой установки для каждого пользователя.
MSIINSTALLCONTEXT_MACHINE
4
Приложение находится в контексте установки для каждого компьютера.

[out, optional] szSid

Получает идентификатор безопасности (SID), который идентифицирует пользователя, установив приложение. Расположение получает пустое строковое значение, если этот экземпляр приложения существует в контексте установки для каждого компьютера.

Длина буфера должна быть достаточно большой, чтобы вместить строковое значение, завершающееся значением NULL, содержащее идентификатор безопасности. Если буфер слишком мал, функция возвращает ERROR_MORE_DATA а расположение, на который указывает pcchSid , получает число TCHAR в идентификаторе безопасности, не включая завершающий символ NULL.

Если szSid имеет значение NULL , а pcchSid является допустимым указателем на расположение в памяти, функция возвращает ERROR_SUCCESS , а расположение получает число TCHAR в идентификаторе безопасности, не включая завершающий символ NULL. Затем функцию можно вызвать еще раз, чтобы получить значение, при этом размер буфера szSid достаточно велик, чтобы содержать *pcchSid + 1 символ.

Тип идентификатора безопасности Значение
Пустая строка.
Приложение устанавливается в контексте установки для каждого компьютера.
Идентификатор безопасности пользователя
Идентификатор безопасности для пользователя, который установил продукт.

[in, out, optional] pcchSid

Указатель на расположение в памяти, содержащее переменную, указывающую число TCHAR в идентификаторе безопасности, не включая завершающий символ NULL. При возврате функции для этой переменной устанавливается размер запрошенного идентификатора безопасности независимо от того, может ли функция успешно скопировать ИД безопасности и завершить символ NULL в расположение буфера, на который указывает szSid. Размер возвращается как число TCHAR в запрошенном значении, не включая завершающий символ NULL.

Этот параметр может иметь значение NULL , только если szSid также имеет значение NULL, в противном случае функция возвращает ERROR_INVALID_PARAMETER. Если для szSid и pcchSid задано значение NULL, функция возвращает ERROR_SUCCESS , если sid существует, без получения значения SID.

Возвращаемое значение

Функция MsiEnumClientsEx возвращает одно из следующих значений.

Код возврата Описание
ERROR_ACCESS_DENIED
Права администратора необходимы для перечисления компонентов приложений, установленных пользователями, кроме текущего пользователя.
ERROR_BAD_CONFIGURATION
Данные конфигурации повреждены.
ERROR_INVALID_PARAMETER
В функцию передается недопустимый параметр.
ERROR_NO_MORE_ITEMS
Больше нет приложений для перечисления.
ERROR_SUCCESS
Функция выполнена успешно.
ERROR_MORE_DATA
Предоставленный буфер был слишком мал для хранения всего значения.
ERROR_FUNCTION_FAILED
Сбой функции.

Комментарии

Примечание

Заголовок msi.h определяет MsiEnumClientsEx в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

   
Минимальная версия клиента Установщик Windows 5.0 в Windows Server 2012, Windows 8, Windows Server 2008 R2 или Windows 7. Сведения о минимальном пакете обновления Windows, необходимом для версии установщика Windows, см. в разделе Требования к установщику Windows Run-Time.
Целевая платформа Windows
Header msi.h
Библиотека Msi.lib
DLL Msi.dll