共用方式為


MsiGetPatchInfoExA 函式 (msi.h)

MsiGetPatchInfoEx 函式會查詢修補程式應用程式至指定產品實例的相關信息。

語法

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

包含修補程式 GUID 的 Null 終止字串。 這個參數不能 NULL

[in] szProductCode

Null 終止的字串,其中包含產品實例的 ProductCode GUID。 這個參數不能 NULL

[in] szUserSid

以 Null 結尾的字串,指定要在其中查詢修補程序實例的安全性識別碼 (SID)。 使用 NULL 值會指定目前的使用者。

SID 意義
NULL
指定登入的使用者。
使用者 SID
指定系統中特定使用者識別碼的列舉。 下列範例會識別可能的使用者 SID:“S-1-3-64-2415071341-1358098788-3127455600-2561”。
 
附註 特殊 SID 字串 “S-1-5-18” (system) 無法用來列舉依機器安裝的產品。 如果 dwContextMSIINSTALLCONTEXT_MACHINEszUserSid 必須為 NULL
 

[in] dwContext

將列舉限制為個別使用者非受控、個別使用者管理或每部計算機內容。 此參數可以是下列任一值。

上下文 意義
MSIINSTALLCONTEXT_USERMANAGED
1
針對 szUserSid 指定之使用者,擴充至所有使用者管理安裝的所有查詢。
MSIINSTALLCONTEXT_USERUNMANAGED
2
針對 szUserSid 指定之使用者,擴充至所有使用者非受控安裝的所有查詢。
MSIINSTALLCONTEXT_MACHINE
4
擴充至所有每部機器安裝的查詢。

[in] szProperty

以 Null 結束的字串,指定要擷取的屬性值。 szProperty 參數可以是下列其中一項:

名字 意義
INSTALLPROPERTY_LOCALPACKAGE
“LocalPackage”
取得產品使用的快取修補程序檔案。
INSTALLPROPERTY_TRANSFORMS
“Transforms”
取得套用至產品之最後一個修補程式安裝的修補程式轉換集。 如果使用者未登入,這個值可能無法供每個使用者、非受控應用程式使用。
INSTALLPROPERTY_INSTALLDATE
“InstallDate”
取得此產品上次收到服務的時間。 每次從產品套用或移除修補程式時,都會取代此屬性的值,或使用 /v Command-Line Option 來修復產品。 如果產品未收到任何修復或修補程式,則此屬性包含此產品安裝在此計算機上的時間。
INSTALLPROPERTY_UNINSTALLABLE
“Uninstallable”
如果修補程式標示為可從產品卸載,則傳回 “1”。 在此情況下,如果無法卸載的另一個修補程式需要此修補程式,安裝程式仍然可以封鎖卸載。
INSTALLPROPERTY_PATCHSTATE
“State”
如果此修補程式目前套用至產品,則傳回 “1”。 如果此修補程式被另一個修補程式取代,則傳回 “2”。 如果此修補程式已過時,則傳回 「4」。。 這些值會對應至 MsiEnumPatchesEx 使用的 dwFilter 參數常數。
INSTALLPROPERTY_DISPLAYNAME
“DisplayName”
取得修補程式的已註冊顯示名稱。 對於未在 MsiPatchMetadata 數據表中包含 DisplayName 屬性的修補程式,傳回的顯示名稱是空字串 (“” )。
INSTALLPROPERTY_MOREINFOURL
“MoreInfoURL”
取得修補程式的已註冊支援資訊 URL。 對於未在 MsiPatchMetadata 數據表中包含 MoreInfoURL 屬性的修補程式,傳回的支持資訊 URL 是空字串(“)。

[out, optional] lpValue

此參數是接收屬性值之緩衝區的指標。 這個緩衝區應該夠大,足以包含資訊。 如果緩衝區太小,函式會傳回 ERROR_MORE_DATA,並將 *pcchValue 設定為屬性值中的 TCHAR 數目,不包括終止 NULL 字元。

如果 lpValue 設定為 NULL,且 pcchValue 設為有效的指標,則函式會傳回 ERROR_SUCCESS,並將 *pcchValue 設定為值中的 TCHAR 數目,不包括終止 NULL 字元。 然後可以再次呼叫 函式來擷取值,其中 lpValue 緩衝區夠大,足以包含 *pcchValue + 1 個字元。

如果 lpValuepcchValue 都設定為 NULL,則函式會傳回 ERROR_SUCCESS 值,而不擷取值。

[in, out] pcchValue

呼叫 函式時,此參數應該是變數的指標,指定 lpValue 緩衝區中 TCHAR 的數目。 當函式傳回時,此參數會設定為要求值的大小,不論函式是否會將值複製到指定的緩衝區。 大小會以要求值中的 TCHAR 數目傳回,不包括終止的 Null 字元。

只有當 lpValueNULL時,才能將此參數設定為 NULL。 否則,函式會傳回 ERROR_INVALID_PARAMETER

傳回值

MsiGetPatchInfoEx 函式會傳回下列值。

傳回碼 描述
ERROR_ACCESS_DENIED
函式無法嘗試存取許可權不足的資源。
ERROR_BAD_CONFIGURATION
組態數據已損毀。
ERROR_FUNCTION_FAILED
函式失敗,而且在其他錯誤碼中找不到錯誤。
ERROR_INVALID_PARAMETER
無效的參數會傳遞至函式。
ERROR_MORE_DATA
值不適用於提供的緩衝區。
ERROR_SUCCESS
已成功列舉修補程式。
ERROR_UNKNOWN_PRODUCT
szProduct 指定的產品未安裝在電腦上。
ERROR_UNKNOWN_PROPERTY
無法辨識屬性。
ERROR_UNKNOWN_PATCH
無法辨識修補程式。

言論

Windows Installer 2.0:不支援 。 從 Windows Installer 3.0 版開始,即可使用此函式。

用戶可以查詢任何可見產品實例的修補數據。 系統管理員群組可以查詢計算機上任何產品實例和任何使用者的修補數據。 如果使用者未登入,則並非所有值都可供每個使用者的非受控應用程式使用。

注意

msi.h 標頭會根據 UNICODE 預處理器常數的定義,將 MsiGetPatchInfoEx 定義為自動選取此函式的 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

另請參閱

ProductCode

移除修補程式