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 | 意義 |
---|---|
|
目前登入的使用者。 |
|
系統中特定用戶的列舉。 使用者 SID 的範例是 “S-1-3-64-2415071341-1358098788-3127455600-2561”。 |
[in] dwContext
正在查詢之產品實例的安裝內容。
名稱 | 意義 |
---|---|
|
擷取產品的個別使用者受控實例的產品屬性。 |
|
擷取產品的每個使用者-Unmanaged 實例的產品屬性。 |
|
擷取產品之每部機器實例的產品屬性。 |
[in] szProperty
正在查詢的屬性。
要擷取的屬性。 下表中的屬性只能從已安裝的應用程式擷取。 所有必要屬性都保證可供使用,但只有在設定屬性時才可使用其他屬性。 如需相關資訊,請參閱
必要屬性 和 屬性。
屬性 | 意義 |
---|---|
|
以字串形式傳回的產品狀態,以 「1」 表示已公告,且已安裝 「5」。 |
|
支援連結。 如需詳細資訊,請參閱 ARPHELPLINK 屬性。 |
|
支持電話。 如需詳細資訊,請參閱 ARPHELPTELEPHONE 屬性。 |
|
此產品上次收到服務的時間。 每次從產品套用或移除修補程式時,都會取代此屬性的值,或使用 /v 命令行選項 來修復產品。 如果產品未收到修復或修補程式,則此屬性包含此產品安裝在這部計算機上的時間。 |
|
已安裝的語言。 |
|
已安裝的產品名稱。 如需詳細資訊,請參閱 ProductName 屬性。 |
|
安裝位置。 如需詳細資訊,請參閱 ARPINSTALLLOCATION 屬性。 |
|
安裝來源。 如需詳細資訊,請參閱 SourceDir 屬性。 |
|
本機快取套件。 |
|
發行者。 如需詳細資訊,請參閱 Manufacturer 屬性。 |
|
URL 資訊。 如需詳細資訊,請參閱 ARPURLINFOABOUT 屬性。 |
|
URL 更新資訊。 如需詳細資訊,請參閱 ARPURLUPDATEINFO 屬性。 |
|
衍生自 ProductVersion 屬性的次要產品版本。 |
|
衍生自 ProductVersion 屬性的主要產品版本。 |
|
產品版本。 如需詳細資訊,請參閱 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 設定為 NULL 且 pcchValue 設定為有效的指標,則函式會傳回 ERROR_SUCCESS ,並將 *pcchValue 設定為值中的 TCHAR 數目,不包括終止的 NULL 字元。 然後可以再次呼叫 函式以擷取值, lpValue 緩衝區夠大,足以包含 *pcchValue + 1 個字元。
如果 lpValue 和 pcchValue 都設定為 NULL,則函式會在值存在時傳回 ERROR_SUCCESS ,而不擷取值。
[in, out, optional] pcchValue
變數的指標,指定 lpValue 緩衝區中的 TCHAR 數目。 當函式傳回時,不論函式是否將值複製到指定的緩衝區,此參數會設定為要求值的大小。 大小會以要求值中的 TCHAR 數目傳回,不包括終止的 Null 字元。
只有當 lpValue 也是 NULL 時,才能將此參數設定為 NULL。 否則,函式會傳回 ERROR_INVALID_PARAMETER。
傳回值
MsiGetProductInfoEx 函式會傳回下列值。
傳回碼 | Description |
---|---|
|
呼叫程式必須具有系統管理許可權,才能為目前使用者以外的使用者安裝產品。 |
|
設定數據已損毀。 |
|
無效的參數會傳遞至 函式。 |
|
緩衝區太小,無法保存要求的數據。 |
|
語言函式已順利完成。 |
|
產品未反轉或卸載。 |
|
屬性無法辨識。
注意 如果查詢的應用程式已公告且未安裝, MsiGetProductInfo 函式會傳回 ERROR_UNKNOWN_PROPERTY 。
|
|
非預期的內部失敗。 |
備註
當 MsiGetProductInfoEx 函式傳回時,pcchValue 參數會包含儲存在緩衝區中的字串長度。 傳回的計數不包含終止的 Null 字元。 如果緩衝區不夠大, MsiGetProductInfoEx 會 傳回ERROR_MORE_DATA, 而pcchValue 參數會包含 TCHAR中的字串大小,而不會計算Null字元。
MsiGetProductInfoEx 函式 (INSTALLPROPERTY_LOCALPACKAGE) 會傳回快取套件的路徑。 快取的套件僅供內部使用。 必須透過 MsiConfigureFeature、MsiConfigureProduct 或 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 |