msiGetComponentPathExA 函式 (msi.h)
MsiGetComponentPathEx 函式會傳回已安裝元件的完整路徑。 如果元件的機碼路徑是登錄機碼,則函式會傳回登錄機碼。
此函式會擴充現有的 MsiGetComponentPath 函式,以啟用跨使用者帳戶和安裝內容的搜尋元件。
語法
INSTALLSTATE MsiGetComponentPathExA(
[in] LPCSTR szProductCode,
[in] LPCSTR szComponentCode,
[in, optional] LPCSTR szUserSid,
[in, optional] MSIINSTALLCONTEXT dwContext,
[out, optional] LPSTR lpOutPathBuffer,
[in, out, optional] LPDWORD pcchOutPathBuffer
);
參數
[in] szProductCode
以 Null 終止的字串值,指定應用程式的產品代碼 GUID。 函式會取得此應用程式所使用的已安裝元件路徑。
[in] szComponentCode
指定元件程式代碼 GUID 的 Null 終止字串值。 函式會取得具有此元件程式代碼的已安裝元件路徑。
[in, optional] szUserSid
以 Null 終止的字串值,指定系統中使用者的安全性識別碼 (SID) 。 函式會取得此 SID 所識別使用者帳戶下所安裝之應用程式的已安裝元件路徑。 特殊 SID 字串 s-1-1-0 (Everyone) 會指定系統中的所有使用者。 如果此參數為 NULL,則函式只會取得目前登入使用者的已安裝元件路徑。
SID 類型 | 意義 |
---|---|
|
指定目前登入的使用者。 |
|
指定系統中的特定使用者。 使用者 SID 的範例為 「S-1-3-64-2415071341-1358098788-3127455600-2561」。。 |
|
指定系統中的所有使用者。 |
[in, optional] dwContext
指定安裝內容的旗標。 函式會取得在指定安裝內容中安裝之應用程式的已安裝元件路徑。 此參數可以是下列值的組合。
[out, optional] lpOutPathBuffer
接收元件路徑的字串值。 此參數可以是 Null。 如果元件是登錄機碼,則會以數值方式表示登錄根目錄。 如果這是登錄子機碼路徑,索引鍵路徑結尾會有反斜杠。 如果這是登錄值機碼路徑,則結尾沒有反斜杠。 例如, HKEY_CURRENT_USER\SOFTWARE\Microsoft 32 位操作系統上的登錄路徑會傳回為 “01:\SOFTWARE\Microsoft”。 在 32 位作業系統上傳回的登錄根目錄定義如下表所示。
根目錄 | 意義 |
---|---|
|
00 |
|
01 |
|
02 |
|
03 |
[in, out, optional] pcchOutPathBuffer
接收 TCHAR 中由 szPathBuf 參數所指向之緩衝區大小的位置指標。 這個位置中的值應該設定為字串中的 TCHAR 計數,包括終止的 Null 字元。 如果緩衝區的大小太小,此參數會接收字串值的長度,而不包含計數中的終止 Null 字元。
傳回值
MsiGetComponentPathEx 函式會傳回下列值。
值 | 意義 |
---|---|
|
正在要求的元件已在計算機上停用。 |
|
設定數據已損毀。 |
|
未安裝元件。 |
|
其中一個函式參數無效。 |
|
元件會安裝在本機。 |
|
元件會安裝為從來源執行。 |
|
元件來源無法存取。 |
|
產品名稱或元件識別碼未知。 |
|
元件以某種方式損毀或部分遺失,而且需要修復。 |
備註
MsiGetComponentPathEx 函式可能會傳回INSTALLSTATE_ABSENT或INSTALL_STATE_UNKNOWN,原因如下:
- INSTALLSTATE_ABSENT
應用程式未正確確保此功能是藉由呼叫 MsiUseFeature 來安裝,並視需要 安裝 MsiConfigureFeature。
- INSTALLSTATE_UNKNOWN
此功能未發佈。 應用程式應該先呼叫 MsiQueryFeatureState 或 MsiEnumFeatures 來判斷此情況。 應用程式會在初始化時進行這些呼叫。 應用程式應該只使用已知已發佈的功能。 由於 msiUseFeature 也應該傳回INSTALLSTATE_UNKNOWN,因此未呼叫 MsiUseFeature 或其傳回值未正確檢查。
注意
msi.h 標頭會根據 UNICODE 預處理器常數的定義,將 MsiGetComponentPathEx 定義為別名,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 如需 Windows Installer 版本所需的最低 Windows Service Pack 相關信息,請參閱 Windows Installer Run-Time 需求。 |
目標平台 | Windows |
標頭 | msi.h |
程式庫 | Msi.lib |
Dll | Msi.dll |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應