Поделиться через


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

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

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

Синтаксис

INSTALLSTATE MsiGetComponentPathExW(
  [in]                LPCWSTR           szProductCode,
  [in]                LPCWSTR           szComponentCode,
  [in, optional]      LPCWSTR           szUserSid,
  [in, optional]      MSIINSTALLCONTEXT dwContext,
  [out, optional]     LPWSTR            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, функция получает путь к установленному компоненту только для пользователя, вошедшего в систему.

Тип SID Значение
NULL
Указывает текущего пользователя, вошедшего в систему.
идентификатор безопасности пользователя
Указывает конкретного пользователя в системе. Примером идентификатора безопасности пользователя является S-1-3-64-2415071341-135809888-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\Microsoft\", если путь к компоненту является разделом реестра в 64-разрядной операционной системе.
 
Корень Значение
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 или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

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

См. также

функций Component-Specific