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

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

Эта функция расширяет существующую функцию MsiGetComponentPath , чтобы включить поиск компонентов в учетных записях пользователей и контекстах установки.

Синтаксис

INSTALLSTATE MsiGetComponentPathExA(
  [in]                LPCSTR            szProductCode,
  [in]                LPCSTR            szComponentCode,
  [in, optional]      LPCSTR            szUserSid,
  [in, optional]      MSIINSTALLCONTEXT dwContext,
  [out, optional]     LPSTR             lpOutPathBuffer,
  [in, out, optional] LPDWORD           pcchOutPathBuffer
);

Параметры

[in] szProductCode

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

[in] szComponentCode

Строковое значение, завершающееся значением NULL, указывающее GUID кода компонента. Функция получает путь к установленному компоненту с этим кодом компонента.

[in, optional] szUserSid

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

Тип идентификатора безопасности Значение
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, optional] dwContext

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

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

[out, optional] lpOutPathBuffer

Строковое значение, получающее путь к компоненту. Этот параметр может принимать значение NULL. Если компонент является разделом реестра, корневые элементы реестра представляются числовым образом. Если это путь к подразделу реестра, в конце пути к ключу имеется обратная косая черта. Если это путь к разделу значения реестра, обратная косая черта в конце отсутствует. Например, путь к реестру в 32-разрядной операционной системе HKEY_CURRENT_USER\SOFTWARE\Microsoft возвращается как "01:\SOFTWARE\Microsoft". Корневые элементы реестра, возвращаемые в 32-разрядных операционных системах, определяются, как показано в следующей таблице.

Примечание В 64-разрядных операционных системах к корням числовых реестров в этой таблице добавляется значение 20, чтобы отличать их от путей к разделу реестра в 32-разрядных операционных системах. Например, путь к разделу реестра HKEY_CURRENT_USER\SOFTWARE\Microsoft возвращается как "21:\SOFTWARE\Microsoft\", если путь к компоненту является разделом реестра в 64-разрядной операционной системе.
 
Root Значение
HKEY_CLASSES_ROOT
00
HKEY_CURRENT_USER
01
HKEY_LOCAL_MACHINE
02
HKEY_USERS
03

[in, out, optional] pcchOutPathBuffer

Указатель на расположение, которое получает размер буфера в TCHAR, на которое указывает параметр szPathBuf . Значение в этом расположении должно быть равно числу TCHAR в строке, включая завершающий символ NULL. Если размер буфера слишком мал, этот параметр получает длину строкового значения без включения завершающего символа NULL в счетчик.

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

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

Значение Значение
INSTALLSTATE_NOTUSED
Запрашиваемый компонент отключен на компьютере.
INSTALLSTATE_BADCONFIG
Данные конфигурации повреждены.
INSTALLSTATE_ABSENT
Компонент не установлен.
INSTALLSTATE_INVALIDARG
Один из параметров функции недопустим.
INSTALLSTATE_LOCAL
Компонент устанавливается локально.
INSTALLSTATE_SOURCE
Компонент устанавливается для запуска из источника.
INSTALLSTATE_SOURCEABSENT
Источник компонента недоступен.
INSTALLSTATE_UNKNOWN
Код продукта или идентификатор компонента неизвестен.
INSTALLSTATE_BROKEN
Компонент поврежден или частично отсутствует и требует восстановления.

Комментарии

Функция MsiGetComponentPathEx может возвращать INSTALLSTATE_ABSENT или INSTALL_STATE_UNKNOWN по следующим причинам:

  • INSTALLSTATE_ABSENT

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

  • INSTALLSTATE_UNKNOWN

    Функция не опубликована. Приложение должно определить это ранее, вызвав MsiQueryFeatureState или MsiEnumFeatures. Приложение выполняет эти вызовы во время инициализации. Приложение должно использовать только функции, которые известны для публикации. Так как INSTALLSTATE_UNKNOWN должны были быть возвращены MsiUseFeature , либо MsiUseFeature не был вызван, либо его возвращаемое значение не было правильно проверено.

Примечание

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

Требования

Требование Значение
Минимальная версия клиента Установщик 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

См. также раздел

Функции, зависящие от компонентов