共用方式為


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
擷取產品的每個使用者-Unmanaged 實例的產品屬性。
MSIINSTALLCONTEXT_MACHINE
擷取產品之每部機器實例的產品屬性。

[in] szProperty

正在查詢的屬性。

要擷取的屬性。 下表中的屬性只能從已安裝的應用程式擷取。 所有必要屬性都保證可供使用,但只有在設定屬性時才可使用其他屬性。 如需相關資訊,請參閱
必要屬性屬性

屬性 意義
INSTALLPROPERTY_PRODUCTSTATE
以字串形式傳回的產品狀態,以 「1」 表示已公告,且已安裝 「5」。
INSTALLPROPERTY_HELPLINK
支援連結。 如需詳細資訊,請參閱 ARPHELPLINK 屬性。
INSTALLPROPERTY_HELPTELEPHONE
支持電話。 如需詳細資訊,請參閱 ARPHELPTELEPHONE 屬性。
INSTALLPROPERTY_INSTALLDATE
此產品上次收到服務的時間。 每次從產品套用或移除修補程式時,都會取代此屬性的值,或使用 /v 命令行選項 來修復產品。 如果產品未收到修復或修補程式,則此屬性包含此產品安裝在這部計算機上的時間。
INSTALLPROPERTY_INSTALLEDLANGUAGE
已安裝的語言。

Windows Installer 4.5 和更早版本不支援。

INSTALLPROPERTY_INSTALLEDPRODUCTNAME
已安裝的產品名稱。 如需詳細資訊,請參閱 ProductName 屬性。
INSTALLPROPERTY_INSTALLLOCATION
安裝位置。 如需詳細資訊,請參閱 ARPINSTALLLOCATION 屬性。
INSTALLPROPERTY_INSTALLSOURCE
安裝來源。 如需詳細資訊,請參閱 SourceDir 屬性。
INSTALLPROPERTY_LOCALPACKAGE
本機快取套件。
INSTALLPROPERTY_PUBLISHER
發行者。 如需詳細資訊,請參閱 Manufacturer 屬性。
INSTALLPROPERTY_URLINFOABOUT
URL 資訊。 如需詳細資訊,請參閱 ARPURLINFOABOUT 屬性。
INSTALLPROPERTY_URLUPDATEINFO
URL 更新資訊。 如需詳細資訊,請參閱 ARPURLUPDATEINFO 屬性。
INSTALLPROPERTY_VERSIONMINOR
衍生自 ProductVersion 屬性的次要產品版本。
INSTALLPROPERTY_VERSIONMAJOR
衍生自 ProductVersion 屬性的主要產品版本。
INSTALLPROPERTY_VERSIONSTRING
產品版本。 如需詳細資訊,請參閱 ProductVersion 屬性。
 

若要從已安裝的應用程式擷取產品標識碼、已註冊的擁有者或已註冊的公司,請將 szProperty 設定為下列其中一個文字字串值。

描述
ProductID 產品標識碼。 如需詳細資訊,請參閱 ProductID 屬性。
RegCompany 註冊使用產品的公司。
RegOwner 註冊以使用產品的擁有者。
 

若要擷取產品的實例類型,請將 szProperty 設定為下列值。 此屬性適用於公告或已安裝的產品。

Description
InstanceType 遺漏值或值為 0 (零,) 表示一般產品安裝。 值 1 (1) 表示使用多個實例轉換和 MSINEWINSTANCE 屬性安裝的產品。 如需詳細資訊,請參閱 安裝多個產品實例和修補程式
 

下表中的屬性可以從公告或安裝的應用程式擷取。 對於目前用戶帳戶以外的用戶帳戶,無法在每一使用者非受控內容下安裝的產品實例擷取這些屬性。

屬性 Description
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 設定為 NULLpcchValue 設定為有效的指標,則函式會傳回 ERROR_SUCCESS ,並將 *pcchValue 設定為值中的 TCHAR 數目,不包括終止的 NULL 字元。 然後可以再次呼叫 函式以擷取值, lpValue 緩衝區夠大,足以包含 *pcchValue + 1 個字元。

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

[in, out, optional] pcchValue

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

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

傳回值

MsiGetProductInfoEx 函式會傳回下列值。

傳回碼 Description
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_DATA而pcchValue 參數會包含 TCHAR中的字串大小,而不會計算Null字元。

MsiGetProductInfoEx 函式 (INSTALLPROPERTY_LOCALPACKAGE) 會傳回快取套件的路徑。 快取的套件僅供內部使用。 必須透過 MsiConfigureFeatureMsiConfigureProduct 或 MsiConfigureProductEx 函式叫用維護模式安裝。

如果查詢的應用程式已公告且未安裝, 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 需求。
目標平台 Windows
標頭 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

系統狀態函式