MsiEnumPatchesExW 函数 (msi.h)
MsiEnumPatchesEx 函数枚举特定上下文或所有上下文中的所有修补程序。 枚举已应用于产品的修补程序。 还会枚举已注册但尚未应用于产品的修补程序。
语法
UINT MsiEnumPatchesExW(
[in, optional] LPCWSTR szProductCode,
[in, optional] LPCWSTR szUserSid,
[in] DWORD dwContext,
[in] DWORD dwFilter,
[in] DWORD dwIndex,
[out, optional] WCHAR [39] szPatchCode,
[out, optional] WCHAR [39] szTargetProductCode,
[out, optional] MSIINSTALLCONTEXT *pdwTargetProductContext,
[out, optional] LPWSTR szTargetUserSid,
[in, out, optional] LPDWORD pcchTargetUserSid
);
参数
[in, optional] szProductCode
一个以 null 结尾的字符串,指定枚举其修补程序的产品的 ProductCode GUID。 如果非NULL,则修补程序枚举仅限于 szUserSid 指定的用户和上下文下的此产品的实例,dwContext。 如果 NULL,则将枚举指定上下文下所有产品的修补程序。
[in, optional] szUserSid
一个以 null 结尾的字符串,指定限制枚举上下文的安全标识符(SID)。 特殊的 SID 字符串“S-1-1-0”(每个人)指定系统中所有用户的枚举。 除“S-1-1-0”以外的 SID 值被视为用户 SID,并将枚举限制为该用户。 为当前用户以外的用户枚举时,不会枚举使用低于 Windows Installer 版本 3.0 的版本在每用户非托管上下文中应用的任何修补程序。 可以将此参数设置为 NULL 来指定当前用户。
SID 类型 | 意义 |
---|---|
|
指定当前已登录的用户。 |
|
系统中特定用户的枚举。 用户 SID 的示例为“S-1-3-64-2415071341-1358098788-3127455600-2561”。 |
|
系统中所有用户的枚举。 |
[in] dwContext
将枚举限制为一个或多个上下文的组合。 此参数可以是以下值的任意一个或组合。
[in] dwFilter
枚举的筛选器。 此参数可以是以下参数的一个或组合。
滤波器 | 意义 |
---|---|
|
枚举包括已应用的修补程序。 枚举不包括取代或过时的修补程序。 |
|
枚举包括标记为被取代的修补程序。 |
|
枚举包括标记为已过时的修补程序。 |
|
枚举包括已注册但尚未应用的修补程序。
MsiSourceListAddSourceEx 函数可以注册新修补程序。
注释 未枚举为当前用户以外的用户注册并在每用户非托管上下文中应用的修补程序。
|
|
枚举包括所有已应用、已过时、取代和已注册的修补程序。 |
[in] dwIndex
要检索的修补程序的索引。 对于对 MsiEnumPatchesEx 函数的第一次调用,此参数必须为零,然后为后续调用递增。 仅当上一次调用返回ERROR_SUCCESS时,才应递增 dwIndex 参数。
[out, optional] szPatchCode
一个输出缓冲区,用于包含要枚举的修补程序的 GUID。 缓冲区应足够大,可以容纳 GUID。 此参数可以 NULL。
[out, optional] szTargetProductCode
一个输出缓冲区,用于包含接收此修补程序的产品的 ProductCode GUID。 缓冲区应足够大,可以容纳 GUID。 此参数可以 NULL。
[out, optional] pdwTargetProductContext
返回要枚举的修补程序的上下文。 输出值可以是 MSIINSTALLCONTEXT_USERMANAGED、MSIINSTALLCONTEXT_USERUNMANAGED或 MSIINSTALLCONTEXT_MACHINE。 此参数可以 NULL。
[out, optional] szTargetUserSid
一个输出缓冲区,用于接收此修补实例所在的帐户的字符串 SID。 此缓冲区返回每台计算机上下文的空字符串。
此缓冲区应足够大,足以包含 SID。 如果缓冲区太小,则该函数将返回 ERROR_MORE_DATA 并将 *pcchTargetUserSid 设置为值中 TCHAR 的数量,不包括终止 NULL 字符。
如果将 szTargetUserSid 设置为 NULL,并且 pcchTargetUserSid 设置为有效指针, 该函数返回 ERROR_SUCCESS 并将 *pcchTargetUserSid 的值中 TCHAR 数,不包括终止 NULL 字符。 然后,可以再次调用该函数以检索值,szTargetUserSid 缓冲区足够大,足以包含 *pcchTargetUserSid + 1 个字符。
如果 szTargetUserSid 和 pcchTargetUserSid 都设置为 NULL,则函数将返回 ERROR_SUCCESS 值(而不检索该值)。
[in, out, optional] pcchTargetUserSid
指向一个变量的指针,该变量指定 szTargetUserSid 缓冲区中 TCHAR 的数目。 当函数返回时,无论函数是否将值复制到指定的缓冲区,此参数都设置为所请求值的大小。 大小返回为请求值中 TCHAR 的数量,不包括终止 null 字符。
仅当 szTargetUserSid 也 NULL时,此参数才能设置为 NULL,否则函数将返回ERROR_INVALID_PARAMETER。
返回值
MsiEnumPatchesEx 函数返回以下值之一。
返回代码 | 描述 |
---|---|
|
该函数无法尝试访问权限不足的资源。 |
|
配置数据已损坏。 |
|
将无效参数传递给函数。 |
|
没有更多要枚举的修补程序。 |
|
已成功枚举修补程序。 |
|
szProduct 指定的产品未安装在指定上下文中的计算机上。 |
|
当 pcchTargetUserSid 指向小于复制 SID 所需的缓冲区大小时,将返回此 ID。 在这种情况下,用户可以修复缓冲区,并针对同一索引值再次调用 MsiEnumPatchesEx。 |
言论
非管理员可以仅枚举其可见性中的修补程序。 管理员可以枚举其他用户上下文的修补程序。
注意
msi.h 标头将 MsiEnumPatchesEx 定义为一个别名,该别名根据 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 |