MsiEnumClientsExA 函式 (msi.h)
MsiEnumClientsEx 函式會列舉使用指定元件的已安裝應用程式。 函式會在每次呼叫應用程式時,擷取應用程式的 原始程式碼。
Windows Installer 4.5 或更早版本:不支援 。 從 Windows Installer 5.0 開始,即可使用此函式。
語法
UINT MsiEnumClientsExA(
[in] LPCSTR szComponent,
[in, optional] LPCSTR szUserSid,
[in] DWORD dwContext,
[in] DWORD dwProductIndex,
[out, optional] CHAR [39] szProductBuf,
[out, optional] MSIINSTALLCONTEXT *pdwInstalledContext,
[out, optional] LPSTR szSid,
[in, out, optional] LPDWORD pcchSid
);
參數
[in] szComponent
識別元件的元件程式代碼 GUID。 函式會列舉使用此元件的應用程式。
[in, optional] szUserSid
包含安全性識別碼 (SID. ) 的 Null 終止字串值。應用程式的列舉延伸至此 SID 所識別的使用者。 特殊的 SID 字串 s-1-1-0 (Everyone) 會列舉系統中所有使用者的所有應用程式。 s-1-1-0 以外的 SID 值會指定特定使用者的使用者 SID,並列舉指定使用者所安裝之應用程式的實例。
SID 類型 | 意義 |
---|---|
|
指定目前登入的使用者。 |
|
指定特定用戶的列舉。 使用者 SID 的範例是 “S-1-3-64-2415071341-1358098788-3127455600-2561”。 |
|
指定系統中所有用戶的列舉。 |
[in] dwContext
旗標,會將 列舉延伸至指定安裝內容中所安裝之應用程式的實例。 列舉只包含由 szUserSid所識別之使用者所安裝之應用程式的實例。
這可以是下列值的組合。
[in] dwProductIndex
指定要擷取之應用程式的索引。 第一次呼叫函式時,此參數的值必須是零 (0)。 針對每個後續呼叫,索引必須遞增 1。 只有當前一次呼叫函式傳回 ERROR_SUCCESS時,才應該遞增索引。
[out, optional] szProductBuf
字串值,接收應用程式的產品名稱。 這個位置的緩衝區長度應該夠大,足以保存包含產品名稱的 Null 終止字串值。 前 38 個 TCHAR 字元會接收元件的 GUID,而第 39 個字元則會收到終止的 NULL 字元。
[out, optional] pdwInstalledContext
旗標,提供應用程式的安裝內容。
這可以是下列值的組合。
上下文 | 意義 |
---|---|
|
應用程式會安裝在每個使用者管理的安裝內容中。 |
|
應用程式會安裝在每個使用者-Unmanaged 安裝內容中。 |
|
應用程式位於每部電腦安裝安裝內容中。 |
[out, optional] szSid
接收可識別已安裝應用程式之使用者的安全性標識碼 (SID)。 如果應用程式實例存在於每部計算機安裝內容中,位置就會收到空字串值。
緩衝區的長度應該足以容納包含 SID 的 Null 終止字串值。 如果緩衝區太小,函式會傳回
如果 szSid 設為 NULL,且 pcchSid 是記憶體中位置的有效指標,則函式會傳回 ERROR_SUCCESS,而且位置會接收 SID 中 TCHAR 的數目,不包括終止的 null 字元。 然後,您可以再次呼叫 函式來擷取值,其中 szSid 緩衝區大小足以包含 *pcchSid + 1 個字元。
SID 類型 | 意義 |
---|---|
|
應用程式會安裝在每部機器安裝內容中。 |
|
安裝產品的使用者的 SID。 |
[in, out, optional] pcchSid
記憶體中位置的指標,其中包含指定 SID 中 TCHAR 數目的變數,不包括終止的 Null 字元。 當函式傳回時,此變數會設定為所要求的 SID 大小,不論函式能否成功將 SID 和終止 Null 字元複製到 szSid所指向的緩衝區位置。 大小會傳回為所要求值中的 TCHAR 數目,不包括終止的 Null 字元。
只有當 szSid 也 NULL時,這個參數才能設定為 NULL,否則函式會傳回 ERROR_INVALID_PARAMETER。 如果 szSid 和 pcchSid 都設定為 NULL,則函式會傳回 ERROR_SUCCESS SID,而不會擷取 SID 值。
傳回值
MsiEnumClientsEx 函式會傳回下列其中一個值。
傳回碼 | 描述 |
---|---|
|
需要系統管理員許可權,才能列舉目前使用者以外的使用者所安裝之應用程式的元件。 |
|
組態數據已損毀。 |
|
無效的參數會傳遞至函式。 |
|
沒有更多要列舉的應用程式。 |
|
函式成功。 |
|
提供的緩衝區太小,無法保存整個值。 |
|
函式失敗。 |
言論
注意
msi.h 標頭會根據 UNICODE 預處理器常數的定義,將 MsiEnumClientsEx 定義為自動選取此函式的 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 |