MsiGetPatchInfoEx 函数查询有关将修补程序应用到产品的指定实例的信息。
Syntax
UINT MsiGetPatchInfoExA(
[in] LPCSTR szPatchCode,
[in] LPCSTR szProductCode,
[in] LPCSTR szUserSid,
[in] MSIINSTALLCONTEXT dwContext,
[in] LPCSTR szProperty,
[out, optional] LPSTR lpValue,
[in, out] LPDWORD pcchValue
);
参数
[in] szPatchCode
一个以 null 结尾的字符串,其中包含修补程序的 GUID。 此参数不能 NULL。
[in] szProductCode
一个以 null 结尾的字符串,其中包含产品实例的 ProductCode GUID。 此参数不能 NULL。
[in] szUserSid
一个以 null 结尾的字符串,指定要查询的修补程序的实例所在的安全标识符(SID)。 使用 NULL 值指定当前用户。
| SID | Meaning |
|---|---|
|
指定登录的用户。 |
|
指定系统中特定用户 ID 的枚举。 以下示例标识可能的用户 SID:“S-1-3-64-2415071341-1358098788-3127455600-2561”。 |
[in] dwContext
将枚举限制为按用户非托管、按用户托管或每台计算机上下文。 此参数可以是以下任一值。
| 上下文 | Meaning |
|---|---|
|
已扩展到 szUserSid 指定用户的所有按用户托管安装的查询。 |
|
为 szUserSid 指定的用户扩展为所有按用户非托管安装的查询。 |
|
扩展到所有每台计算机安装的查询。 |
[in] szProperty
一个以 null 结尾的字符串,指定要检索的属性值。 szProperty 参数可以是下列参数之一:
| Name | Meaning |
|---|---|
|
获取产品使用的缓存修补程序文件。 |
|
获取最后一个修补程序安装应用于产品的修补程序转换集。 如果用户未登录,则此值可能不适用于每个用户的非托管应用程序。 |
|
获取此产品上次收到服务的时间。 每次从产品应用或删除修补程序时,都会替换此属性的值,或者 /v Command-Line 选项 用于修复产品。 如果产品未收到任何修复或修补程序,则此属性包含此产品在此计算机上安装的时间。 |
|
如果修补程序标记为可能从产品中卸载,则返回“1”。 在这种情况下,如果无法卸载的另一个修补程序需要此修补程序,安装程序仍可以阻止卸载。 |
|
如果此修补程序当前应用于产品,则返回“1”。 如果此修补程序被另一个修补程序取代,则返回“2”。 如果此修补程序已过时,则返回“4”。 这些值对应于 MsiEnumPatchesEx 使用的 dwFilter 参数的常量。 |
|
获取修补程序的已注册显示名称。 对于不包括 MsiPatchMetadata 表中 DisplayName 属性的修补程序,返回的显示名称是空字符串(“)。 |
|
获取修补程序的已注册支持信息 URL。 对于未在 MsiPatchMetadata 表中包括 MoreInfoURL 属性的修补程序,返回的支持信息 URL 是空字符串(“)。 |
[out, optional] lpValue
此参数是指向接收属性值的缓冲区的指针。 此缓冲区应足够大,足以包含信息。 如果缓冲区太小,则该函数将返回 ERROR_MORE_DATA 并将 *pcchValue 设置为属性值中的 TCHAR 数,不包括终止 NULL 字符。
如果将 lpValue 设置为 NULL 并且 pcchValue 设置为有效指针,则该函数将返回 ERROR_SUCCESS 并将 *pcchValue 设置为值中的 TCHAR 数,不包括终止 NULL 字符。 然后,可以再次调用该函数以检索值, 其中 lpValue 缓冲区足够大,足以包含 *pcchValue + 1 个字符。
如果 lpValue 和 pcchValue 都设置为 NULL,则函数将返回 ERROR_SUCCESS 该值是否存在,而不检索该值。
[in, out] pcchValue
调用函数时,此参数应是指向指定 lpValue 缓冲区中 TCHAR 数的变量的指针。 当函数返回时,无论函数是否将值复制到指定的缓冲区,此参数都设置为所请求值的大小。 大小作为请求值中的 TCHAR 数返回,不包括终止 null 字符。
仅当 lpValue 也为 NULL 时,此参数才能设置为 NULL。 否则,该函数将返回 ERROR_INVALID_PARAMETER。
返回值
MsiGetPatchInfoEx 函数返回以下值。
| 返回代码 | Description |
|---|---|
|
该函数无法尝试访问权限不足的资源。 |
|
配置数据已损坏。 |
|
函数失败,并且错误在其他错误代码中未标识。 |
|
将无效参数传递给函数。 |
|
该值不适合提供的缓冲区。 |
|
已成功枚举修补程序。 |
|
szProduct 指定的产品未安装在计算机上。 |
|
无法识别该属性。 |
|
修补程序无法识别。 |
注解
Windows Installer 2.0: 不支持。 从 Windows Installer 版本 3.0 开始,此函数可用。
用户可以查询任何可见的产品实例的修补数据。 管理员组可以查询计算机上的任何产品实例和任何用户的修补数据。 并非所有值都保证适用于每个用户的非托管应用程序(如果未登录)。
注释
msi.h 标头将 MsiGetPatchInfoEx 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | 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 要求。 |
| 目标平台 | Windows操作系统 |
| Header | msi.h |
| Library | Msi.lib |
| DLL | Msi.dll |