共用方式為


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 類型 意義
NULL
指定目前登入的使用者。
使用者 SID
指定系統中的特定使用者。 使用者 SID 的範例是 “S-1-3-64-2415071341-1358098788-3127455600-2561”。
s-1-1-0
指定系統中的所有使用者。
 
附註 特殊 SID 字串 s-1-5-18 (系統) 無法用來搜尋安裝在每部電腦安裝內容中的應用程式。 將 SID 值設定為 s-1-5-18 會傳回 ERROR_INVALID_PARAMETERdwContext 設定為僅限MSIINSTALLCONTEXT_MACHINE時,szUserSid 必須 NULL
 

[in, optional] dwContext

指定安裝內容的旗標。 函式會取得指定安裝內容中所安裝應用程式之已安裝元件的路徑。 此參數可以是下列值的組合。

上下文 意義
MSIINSTALLCONTEXT_USERMANAGED
1
包含安裝在個別使用者管理的安裝內容中的應用程式。
MSIINSTALLCONTEXT_USERUNMANAGED
2
包含安裝在個別使用者-Unmanaged 安裝內容中的應用程式。
MSIINSTALLCONTEXT_MACHINE
4
包含安裝在每部電腦安裝內容中的應用程式。 當 dwInstallContext 設定為僅 MSIINSTALLCONTEXT_MACHINE 時,szUserSID 參數必須 NULL

[out, optional] lpOutPathBuffer

接收元件路徑的字串值。 此參數可以是 NULL。 如果元件是登錄機碼,則登錄根目錄會以數值表示。 如果這是登錄子機碼路徑,索引鍵路徑結尾會有反斜杠。 如果這是登錄值機碼路徑,則結尾沒有反斜杠。 例如,32 HKEY_CURRENT_USER\位SOFTWARE\Microsoft 操作系統上的登錄路徑會傳回為 “01:\SOFTWARE\Microsoft”。 在 32 位作業系統上傳回的登錄根目錄定義如下表所示。

注意 64 位作業系統上,此數據表中的數值登錄根目錄會新增 20,以區別它們與 32 位操作系統上的登錄機碼路徑。 例如,如果元件路徑是64位操作系統上的登錄機碼路徑,HKEY_CURRENT_USER\Microsoft 會傳回 HKEY_CURRENT_USER\SOFTWARE Microsoft\ 的登錄機碼路徑。
 
意義
HKEY_CLASSES_ROOT
00
HKEY_CURRENT_USER
01
HKEY_LOCAL_MACHINE
02
HKEY_USERS
03

[in, out, optional] pcchOutPathBuffer

接收緩衝區大小的位置指標,在 TCHAR中,szPathBuf 參數所指向。 此位置中的值應該設定為字串中包含終止 Null 字元的 TCHAR 計數。 如果緩衝區的大小太小,此參數會接收字串值的長度,而不包含計數中終止的 Null 字元。

傳回值

MsiGetComponentPathEx 函式會傳回下列值。

價值 意義
INSTALLSTATE_NOTUSED
計算機上已停用要求的元件。
INSTALLSTATE_BADCONFIG
組態數據已損毀。
INSTALLSTATE_ABSENT
未安裝元件。
INSTALLSTATE_INVALIDARG
其中一個函式參數無效。
INSTALLSTATE_LOCAL
元件會安裝在本機。
INSTALLSTATE_SOURCE
元件會安裝以從來源執行。
INSTALLSTATE_SOURCEABSENT
無法存取元件來源。
INSTALLSTATE_UNKNOWN
產品名稱或元件識別碼未知。
INSTALLSTATE_BROKEN
元件以某種方式損毀或部分遺失,需要修復。

言論

MsiGetComponentPathEx 函式可能會傳回 INSTALLSTATE_ABSENTINSTALL_STATE_UNKNOWN,原因如下:

  • INSTALLSTATE_ABSENT

    應用程式未正確確保已藉由呼叫 MsiUseFeature 安裝此功能,並視需要 MsiConfigureFeature

  • INSTALLSTATE_UNKNOWN

    此功能未發佈。 應用程式應該稍早呼叫 MsiQueryFeatureStateMsiEnumFeatures來判斷此情況。 應用程式會在初始化時進行這些呼叫。 應用程式應該只使用已知已發佈的功能。 由於INSTALLSTATE_UNKNOWN應該由 MsiUseFeature 傳回,因此未呼叫 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 需求。
目標平臺 窗戶
標頭 msi.h
連結庫 Msi.lib
DLL Msi.dll

另請參閱

Component-Specific 函式