MsiQueryComponentStateA 函数 (msi.h)
MsiQueryComponentState 函数返回组件的已安装状态。 此函数可以查询安装在当前用户以外的用户帐户下的产品实例的组件,前提是产品未在当前用户以外的用户帐户的按用户非托管上下文下播发。 调用进程必须具有管理权限才能获取为当前用户以外的用户安装的产品的信息。
语法
UINT MsiQueryComponentStateA(
[in] LPCSTR szProductCode,
[in] LPCSTR szUserSid,
[in] MSIINSTALLCONTEXT dwContext,
[in] LPCSTR szComponentCode,
[out] INSTALLSTATE *pdwState
);
参数
[in] szProductCode
指定包含组件的产品的 ProductCode GUID。
[in] szUserSid
指定所查询产品实例所在的帐户的安全标识符 (SID) 。 如果未MSIINSTALLCONTEXT_MACHINE dwContext ,则 null 指定当前用户。
SID 的类型 | 含义 |
---|---|
|
NULL 表示当前登录的用户。 |
|
指定系统中特定用户的枚举。 用户 SID 的示例是“S-1-3-64-2415071341-1358098788-3127455600-2561”。 |
注意 特殊 SID 字符串“S-1-5-18” (系统) 不能用于枚举按计算机安装的产品。 如果 dwContext为MSIINSTALLCONTEXT_MACHINE, 则 szUserSid 必须为 null。
[in] dwContext
正在查询的产品实例的安装上下文。
名称 | 含义 |
---|---|
|
检索产品的按用户托管实例的组件状态。 |
|
检索产品的每用户非托管实例的组件状态。 |
|
检索产品的每台计算机实例的组件状态。 |
[in] szComponentCode
指定要查询的组件。 组件表的 ComponentID 列中的 组件 代码 GUID。
[out] pdwState
指定产品实例的组件的安装状态。 此参数可以返回以下值之一或 null 值。
值 | 含义 |
---|---|
|
组件在本地安装。 |
|
安装组件并设为从源运行。 |
返回值
MsiQueryComponentState 函数返回以下值。
值 | 含义 |
---|---|
|
调用进程必须具有管理权限才能获取为当前用户以外的用户安装的产品的信息。 |
|
配置数据已损坏。 |
|
向该函数传递了无效参数。 |
|
函数已成功完成。 |
|
组件 ID 未标识已知组件。 |
|
产品代码未标识已知产品。 |
|
无法归咎于任何 Windows 错误代码的故障。 |
|
缓冲区太小,无法获取用户 SID。 |
有关详细信息,请参阅 显示的错误消息。
注解
注意
msi.h 标头将 MsiQueryComponentState 定义为别名,该别名根据 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 运行时要求。 |
目标平台 | Windows |
标头 | msi.h |
Library | Msi.lib |
DLL | Msi.dll |