MsiGetProductInfoExW 函式 (msi.h)
MsiGetProductInfoEx 函式會傳回公告和已安裝產品的產品資訊。 此函式可以擷取資訊
關於安裝在目前使用者以外的用戶帳戶下之產品的實例。
呼叫進程必須具有與目前使用者不同之用戶的系統管理許可權。 MsiGetProductInfoEx 函式無法針對目前使用者以外的使用者帳戶,查詢在每個使用者非受控內容下公告的產品實例。
此函式是 MsiGetProductInfo 函式的延伸模組。
語法
UINT MsiGetProductInfoExW(
[in] LPCWSTR szProductCode,
[in] LPCWSTR szUserSid,
[in] MSIINSTALLCONTEXT dwContext,
[in] LPCWSTR szProperty,
[out, optional] LPWSTR 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 | 產品安裝來源之套件的標識碼。 如需詳細資訊,請參閱 Package Code 屬性。 |
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 標頭會根據 UNICODE 預處理器常數的定義,將 MsiGetProductInfoEx 定義為別名,自動選取此函式的 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 |