MsiGetProductInfoExA 函数 (msi.h)

MsiGetProductInfoEx 函数返回已播发和已安装产品的产品信息。 此函数可以检索信息

关于在当前用户以外的用户帐户下安装的产品实例。

调用过程必须具有与当前用户不同的用户的管理权限。 MsiGetProductInfoEx 函数无法查询在除当前用户以外的用户帐户的按用户非托管上下文下播发的产品实例。

此函数是 MsiGetProductInfo 函数的扩展。

语法

UINT MsiGetProductInfoExA(
  [in]                LPCSTR            szProductCode,
  [in]                LPCSTR            szUserSid,
  [in]                MSIINSTALLCONTEXT dwContext,
  [in]                LPCSTR            szProperty,
  [out, optional]     LPSTR             szValue,
  [in, out, optional] LPDWORD           pcchValue
);

参数

[in] szProductCode

正在查询的产品实例的 ProductCode GUID。

[in] szUserSid

要查询的产品实例所在的帐户的安全标识符(SID)。 NULL 指定当前用户 SID。

SID 意义
NULL
当前已登录的用户。
用户 SID
系统中特定用户的枚举。 用户 SID 的示例为“S-1-3-64-2415071341-1358098788-3127455600-2561”。
 
注意 特殊 SID 字符串“S-1-5-18”(系统)不能用于按计算机枚举安装的产品。 如果 dwContext 为“MSIINSTALLCONTEXT_MACHINE”,szUserSid 必须 NULL
 

[in] dwContext

正在查询的产品实例的安装上下文。

名字 意义
MSIINSTALLCONTEXT_USERMANAGED
检索产品的每个用户托管实例的产品属性。
MSIINSTALLCONTEXT_USERUNMANAGED
检索产品的每个用户非托管实例的产品属性。
MSIINSTALLCONTEXT_MACHINE
检索产品的每台计算机实例的产品属性。

[in] szProperty

正在查询的属性。

要检索的属性。 下表中的属性只能从已安装的应用程序中检索。 所有必需的属性都保证可用,但仅当设置属性时,其他属性才可用。 有关详细信息,请参阅
必需属性属性

财产 意义
INSTALLPROPERTY_PRODUCTSTATE
以字符串形式返回的产品的状态为“1”(已播发),安装为“5”。
INSTALLPROPERTY_HELPLINK
支持链接。 有关详细信息,请参阅 ARPHELPLINK 属性。
INSTALLPROPERTY_HELPTELEPHONE
支持电话。 有关详细信息,请参阅 ARPHELPTELEPHONE 属性。
INSTALLPROPERTY_INSTALLDATE
此产品上次收到服务的时间。 每次从产品应用或删除修补程序或 /v Command-Line 选项 用于修复产品时,都会替换此属性的值。 如果产品未收到任何修复或修补程序,则此属性包含此产品在此计算机上安装的时间。
INSTALLPROPERTY_INSTALLEDLANGUAGE
已安装的语言。

Windows Installer 4.5 及更早版本:不支持

INSTALLPROPERTY_INSTALLEDPRODUCTNAME
已安装的产品名称。 有关详细信息,请参阅 ProductName 属性。
INSTALLPROPERTY_INSTALLLOCATION
安装位置。 有关详细信息,请参阅 ARPINSTALLLOCATION 属性。
INSTALLPROPERTY_INSTALLSOURCE
安装源。 有关详细信息,请参阅 SourceDir 属性。
INSTALLPROPERTY_LOCALPACKAGE
本地缓存包。
INSTALLPROPERTY_PUBLISHER
发布者。 有关详细信息,请参阅 制造商 属性。
INSTALLPROPERTY_URLINFOABOUT
URL 信息。 有关详细信息,请参阅 ARPURLINFOABOUT 属性。
INSTALLPROPERTY_URLUPDATEINFO
URL 更新信息。 有关详细信息,请参阅 ARPURLUPDATEINFO 属性。
INSTALLPROPERTY_VERSIONMINOR
派生自 ProductVersion 属性的次要产品版本。
INSTALLPROPERTY_VERSIONMAJOR
派生自 ProductVersion 属性的主要产品版本。
INSTALLPROPERTY_VERSIONSTRING
产品版本。 有关详细信息,请参阅 ProductVersion 属性。
 

若要从已安装的应用程序检索产品 ID、已注册所有者或已注册的公司,请将 szProperty 设置为以下文本字符串值之一。

价值 描述
ProductID 产品标识符。 有关详细信息,请参阅 ProductID 属性。
RegCompany 注册使用该产品的公司。
RegOwner 注册使用该产品的所有者。
 

若要检索产品的实例类型,请将 szProperty 设置为以下值。 此属性可用于播发或已安装的产品。

价值 描述
InstanceType 缺失值或值为 0(零)表示正常的产品安装。 值 1(1)表示使用多个实例转换和 MSINEWINSTANCE 属性安装的产品。 有关详细信息,请参阅 安装多个产品和修补程序实例
 

可以从播发或安装的应用程序中检索下表中的属性。 对于在除当前用户帐户以外的用户帐户的按用户非托管上下文下安装的产品实例,无法检索这些属性。

财产 描述
INSTALLPROPERTY_TRANSFORMS 变换。
INSTALLPROPERTY_LANGUAGE 产品语言。
INSTALLPROPERTY_PRODUCTNAME 人工可读产品名称。 有关详细信息,请参阅 ProductName 属性。
INSTALLPROPERTY_ASSIGNMENTTYPE 如果产品是按用户播发或安装的,则等于 0(零)。

如果产品是针对所有用户播发或安装的,则等于 1 (1)。

INSTALLPROPERTY_PACKAGECODE 从中安装产品的包的标识符。 有关详细信息,请参阅 包代码 属性。
INSTALLPROPERTY_VERSION 派生自 ProductVersion 属性的产品版本。
INSTALLPROPERTY_PRODUCTICON 包的主图标。 有关详细信息,请参阅 ARPPRODUCTICON 属性。
INSTALLPROPERTY_PACKAGENAME 原始安装包的名称。
INSTALLPROPERTY_AUTHORIZED_LUA_APP 值 1(1)表示可以使用 用户帐户控制(UAC)修补由非管理员提供服务的产品。 缺失值或值为 0(零)表示未启用最小特权修补。 在 Windows Installer 3.0 或更高版本中可用。

[out, optional] szValue

指向接收属性值的缓冲区的指针。 此缓冲区应足够大,足以包含信息。 如果缓冲区太小,则该函数将返回 ERROR_MORE_DATA 并将 *pcchValue 设置为值中 TCHAR 数,不包括终止 NULL 字符。

如果将 lpValue 设置为 NULL,并且 pcchValue 设置为有效指针,则该函数将返回 ERROR_SUCCESS 并将 *pcchValue 设置为值中 TCHAR 的数量,不包括终止 NULL 字符。 然后,可以再次调用该函数以检索值,lpValue 缓冲区足够大,足以包含 *pcchValue + 1 个字符。

如果 lpValuepcchValue 都设置为 NULL,则函数将返回 ERROR_SUCCESS 值(而不检索该值)。

[in, out, optional] pcchValue

指向一个变量的指针,该变量指定 lpValue 缓冲区中 TCHAR 的数目。 当函数返回时,无论函数是否将值复制到指定的缓冲区,此参数都设置为所请求值的大小。 大小返回为请求值中 TCHAR 的数量,不包括终止 null 字符。

仅当 lpValueNULL时,才能将此参数设置为 NULL。 否则,该函数将返回 ERROR_INVALID_PARAMETER

返回值

MsiGetProductInfoEx 函数返回以下值。

返回代码 描述
ERROR_ACCESS_DENIED
调用过程必须具有管理权限才能获取为当前用户以外的用户安装的产品的信息。
ERROR_BAD_CONFIGURATION
配置数据已损坏。
ERROR_INVALID_PARAMETER
将无效参数传递给函数。
ERROR_MORE_DATA
缓冲区太小,无法保存请求的数据。
ERROR_SUCCESS
函数成功完成。
ERROR_UNKNOWN_PRODUCT
产品未经过修改或卸载。
ERROR_UNKNOWN_PROPERTY
无法识别该属性。
注释 如果播发且未安装应用程序,MsiGetProductInfo 函数将返回 ERROR_UNKNOWN_PROPERTY
 
ERROR_FUNCTION_FAILED
意外的内部故障。

言论

MsiGetProductInfoEx 函数返回时,pcchValue 参数包含存储在缓冲区中的字符串的长度。 返回的计数不包括终止 null 字符。 如果缓冲区不够大,MsiGetProductInfoEx 返回 ERROR_MORE_DATApcchValue 参数包含字符串的大小(TCHAR),而不计算 null 字符。

MsiGetProductInfoEx 函数 (INSTALLPROPERTY_LOCALPACKAGE) 返回缓存包的路径。 缓存包仅供内部使用。 必须通过 MsiConfigureFeatureMsiConfigureProductMsiConfigureProductEx 函数调用维护模式安装。

MsiGetProductInfo 函数在播发且未安装应用程序时返回 ERROR_UNKNOWN_PROPERTY。 例如,如果应用程序播发且未安装,则 INSTALLPROPERTY_INSTALLLOCATION 查询将返回 ERROR_UNKNOWN_PROPERTY错误。

注意

msi.h 标头将 MsiGetProductInfoEx 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 有关 Windows Installer 版本所需的最低 Windows Service Pack 的信息,请参阅 Windows Installer Run-Time 要求。
目标平台 窗户
标头 msi.h
Msi.lib
DLL Msi.dll

另请参阅

ARPHELPLINK

ARPHELPTELEPHONE

ARPINSTALLLOCATION

ARPPRODUCTICON

ARPURLINFOABOUT

ARPURLUPDATEINFO

制造商

MsiConfigureFeature

MsiConfigureProduct

MsiConfigureProductEx

Windows Installer 2.0 及更早版本中不支持

包代码

ProductCode

ProductID

ProductName

ProductVersion

属性

必需属性

SourceDir

系统状态函数