Funzione MsiEnumProductsExA (msi.h)
La funzione MsiEnumProductsEx enumera una o tutte le istanze di prodotti attualmente annunciati o installati nei contesti specificati. Questa funzione sostituisce MsiEnumProducts.
Sintassi
UINT MsiEnumProductsExA(
[in, optional] LPCSTR szProductCode,
[in] LPCSTR szUserSid,
[in] DWORD dwContext,
[in] DWORD dwIndex,
[out, optional] CHAR [39] szInstalledProductCode,
[out, optional] MSIINSTALLCONTEXT *pdwInstalledContext,
[out, optional] LPSTR szSid,
[in, out, optional] LPDWORD pcchSid
);
Parametri
[in, optional] szProductCode
Productcode GUID del prodotto da enumerare. Vengono enumerate solo istanze di prodotti nell'ambito del contesto specificato dai parametri szUserSid e dwContext . Questo parametro può essere impostato su NULL per enumerare tutti i prodotti nel contesto specificato.
[in] szUserSid
Stringa con terminazione Null che specifica un SID (Security Identifier) che limita il contesto dell'enumerazione. La speciale stringa SID s-1-1-0 (Everyone) specifica l'enumerazione in tutti gli utenti del sistema. Un valore SID diverso da s-1-1-0 viene considerato un SID utente e limita l'enumerazione all'utente corrente o a qualsiasi utente nel sistema. Questo parametro può essere impostato su NULL per limitare l'ambito di enumerazione all'utente corrente.
[in] dwContext
Limita l'enumerazione a un contesto. Questo parametro può essere una o una combinazione dei valori illustrati nella tabella seguente.
[in] dwIndex
Specifica l'indice del prodotto da recuperare. Questo parametro deve essere zero per la prima chiamata alla funzione MsiEnumProductsEx e quindi incrementato per le chiamate successive. L'indice deve essere incrementato, solo se la chiamata precedente ha restituito ERROR_SUCCESS. Poiché i prodotti non sono ordinati, qualsiasi nuovo prodotto ha un indice arbitrario. Ciò significa che la funzione può restituire prodotti in qualsiasi ordine.
[out, optional] szInstalledProductCode
Stringa con terminazione Null di TCHAR che fornisce il GUID ProductCode dell'istanza del prodotto da enumerare. Questo parametro può essere NULL.
[out, optional] pdwInstalledContext
Restituisce il contesto dell'istanza del prodotto da enumerare. Il valore di output può essere MSIINSTALLCONTEXT_USERMANAGED, MSIINSTALLCONTEXT_USERUNMANAGED o MSIINSTALLCONTEXT_MACHINE. Questo parametro può essere NULL.
[out, optional] szSid
Buffer di output che riceve il SID stringa dell'account in cui è presente questa istanza del prodotto. Questo buffer restituisce una stringa vuota per un'istanza installata in un contesto per computer.
Questo buffer deve essere sufficientemente grande da contenere il SID. Se il buffer è troppo piccolo, la funzione restituisce ERROR_MORE_DATA e imposta *pcchSid sul numero di TCHAR nel SID, senza includere il carattere NULL di terminazione.
Se szSid è impostato su NULL e pcchSid è impostato su un puntatore valido, la funzione restituisce ERROR_SUCCESS e imposta *pcchSid sul numero di TCHAR nel valore, senza includere il valore NULL di terminazione. La funzione può quindi essere chiamata di nuovo per recuperare il valore, con il buffer szSid sufficientemente grande da contenere *pcchSid + 1 caratteri.
Se szSid e pcchSid sono entrambi impostati su NULL, la funzione restituisce ERROR_SUCCESS se il valore esiste, senza recuperare il valore.
[in, out, optional] pcchSid
Quando si chiama la funzione, questo parametro deve essere un puntatore a una variabile che specifica il numero di TCHAR nel buffer szSid . Quando la funzione viene restituita, questo parametro viene impostato sulle dimensioni del valore richiesto indipendentemente dal fatto che la funzione copia il valore nel buffer specificato. La dimensione viene restituita come numero di TCHAR nel valore richiesto, senza includere il carattere Null di terminazione.
Questo parametro può essere impostato su NULL solo se szSid è null, altrimenti la funzione restituisce ERROR_INVALID_PARAMETER.
Valore restituito
La funzione MsiEnumProductsEx restituisce uno dei valori seguenti.
Codice restituito | Descrizione |
---|---|
|
Se l'ambito include utenti diversi dall'utente corrente, sono necessari privilegi di amministratore. |
|
I dati di configurazione sono danneggiati. |
|
Alla funzione è stato passato un parametro non valido. |
|
Non ci sono più prodotti da enumerare. |
|
Viene enumerato un prodotto. |
|
Il parametro szSid è troppo piccolo per ottenere il SID utente. |
|
Il prodotto non è installato nel computer nel contesto specificato. |
|
Errore interno imprevisto. |
Commenti
Per enumerare i prodotti, un'applicazione deve inizialmente chiamare la funzione MsiEnumProductsEx con il parametro iIndex impostato su zero. L'applicazione deve quindi incrementare il parametro iProductIndex e chiamare MsiEnumProductsEx fino a quando non restituisce ERROR_NO_MORE_ITEMS e non sono più prodotti da enumerare.
Quando si effettuano più chiamate a MsiEnumProductsEx per enumerare tutti i prodotti, ogni chiamata deve essere eseguita dallo stesso thread.
Un utente deve disporre dei privilegi di amministratore per enumerare i prodotti in tutti gli account utente o in un account utente diverso dall'account utente corrente. L'enumerazione ignora i prodotti annunciati solo (ad esempio i prodotti non installati) nel contesto non gestito per utente durante l'enumerazione in tutti gli utenti o un utente diverso dall'utente corrente.
Usare MsiGetProductInfoEx per ottenere lo stato o altre informazioni su ogni istanza del prodotto enumerata da MsiEnumProductsEx.
Nota
L'intestazione msi.h definisce MsiEnumProductsEx come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Installer 5.0 in Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 in Windows Server 2008 o Windows Vista. Windows Installer 3.0 o versione successiva in Windows Server 2003 o Windows XP. Per informazioni sul Service Pack minimo di Windows richiesto da una versione di Windows Installer, vedere Windows Installer Run-Time Requirements .See the Windows Installer requirements for information about the minimum Windows Service Pack that is required by a Windows Installer version. |
Piattaforma di destinazione | Windows |
Intestazione | msi.h |
Libreria | Msi.lib |
DLL | Msi.dll |
Vedi anche
Non supportato in Windows Installer 2.0 e versioni precedenti