Funzione MsiEnumProductsExW (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 MsiEnumProductsExW(
[in, optional] LPCWSTR szProductCode,
[in] LPCWSTR szUserSid,
[in] DWORD dwContext,
[in] DWORD dwIndex,
[out, optional] WCHAR [39] szInstalledProductCode,
[out, optional] MSIINSTALLCONTEXT *pdwInstalledContext,
[out, optional] LPWSTR szSid,
[in, out, optional] LPDWORD pcchSid
);
Parametri
[in, optional] szProductCode
ProductCode GUID del prodotto da enumerare. Vengono enumerate solo istanze di prodotti all'interno dell'ambito del contesto specificato dal szUserSid e dwContext parametri. 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 i prodotti in qualsiasi ordine.
[out, optional] szInstalledProductCode
Stringa con terminazione Null di TCHAR che fornisce il ProductCode GUID 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 esiste 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 l'NULL. La funzione può quindi essere chiamata di nuovo per recuperare il valore, con il buffer szSid buffer 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
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. |
|
Un prodotto viene enumerato. |
|
Il parametro szSid |
|
Il prodotto non è installato nel computer nel contesto specificato. |
|
Errore interno imprevisto. |
Osservazioni
Per enumerare i prodotti, un'applicazione deve inizialmente chiamare la funzione
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 non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
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 Requisiti di windows Run-Time. |
piattaforma di destinazione | Finestre |
intestazione |
msi.h |
libreria |
Msi.lib |
dll | Msi.dll |
Vedere anche
non supportato in Windows Installer 2.0 e versioni precedenti