Funzione MsiEnumComponentsExW (msi.h)

La funzione MsiEnumComponentsEx enumera i componenti installati. La funzione recupera il codice del componente per un componente ogni volta che viene chiamato. Il codice del componente è il GUID stringa univoco per il componente, la versione e la lingua.

Windows Installer 4.5 o versioni precedenti: Non supportato. Questa funzione è disponibile a partire da Windows Installer 5.0.

Sintassi

UINT MsiEnumComponentsExW(
  [in, optional]  LPCWSTR           szUserSid,
  [in]            DWORD             dwContext,
  [in]            DWORD             dwIndex,
  [out, optional] WCHAR [39]        szInstalledComponentCode,
  [out, optional] MSIINSTALLCONTEXT *pdwInstalledContext,
  [out, optional] LPWSTR            szSid,
  [in, out]       LPDWORD           pcchSid
);

Parametri

[in, optional] szUserSid

Stringa con terminazione Null che contiene un IDENTIFICATORe di sicurezza (SID). L'enumerazione dei componenti installati si estende agli utenti identificati da questo SID. La speciale stringa SID s-1-1-0 (Everyone) specifica un'enumerazione di tutti i componenti installati in tutti i prodotti di tutti gli utenti del sistema. Un valore SID diverso da s-1-1-0 specifica un SID utente per un determinato utente e limita l'enumerazione a istanze di applicazioni installate dall'utente specificato.

Tipo SID Significato
NULL
Specifica l'utente attualmente connesso.
SID utente
Enumerazione per un utente specifico nel sistema. Un esempio di SID utente è "S-1-3-64-2415071341-1358098788-312745600-2561".
s-1-1-0
Specifica tutti gli utenti nel sistema.
 
Nota  

Non è possibile usare la speciale stringa SID s-1-5-18 (System) per enumerare le applicazioni installate nel contesto di installazione per computer. L'impostazione del valore SID su s-1-5-18 restituisce ERROR_INVALID_PARAMETER. Quando dwContext è impostato solo su MSIINSTALLCONTEXT_MACHINE, szUserSid deve essere NULL.

 

[in] dwContext

Flag che limita l'enumerazione del componente installato a istanze di prodotti installati nel contesto di installazione specificato. L'enumerazione include solo le istanze del prodotto installate dagli utenti specificati da szUserSid.

Contrassegno Significato
MSIINSTALLCONTEXT_USERMANAGED
1
Includere i prodotti esistenti nel contesto di installazione gestita dall'utente.
MSIINSTALLCONTEXT_USERUNMANAGED
2
Includere prodotti esistenti nel contesto di installazione per utente-non gestito.
MSIINSTALLCONTEXT_MACHINE
4
Includere i prodotti presenti nel contesto di installazione per computer. Quando dwInstallContext è impostato solo su MSIINSTALLCONTEXT_MACHINE, il parametro szUserSID deve essere NULL.

[in] dwIndex

Specifica l'indice del componente da recuperare. Questo parametro deve essere zero (0) per la prima chiamata alla funzione MsiEnumComponentsEx . Per ogni chiamata successiva, l'indice deve essere incrementato di 1. L'indice deve essere incrementato solo se la chiamata precedente alla funzione restituisce ERROR_SUCCESS. I componenti non sono ordinati e possono essere restituiti dalla funzione in qualsiasi ordine.

[out, optional] szInstalledComponentCode

Buffer di output che riceve il GUID del codice del componente per il componente installato. La lunghezza del buffer deve essere sufficientemente grande da contenere un valore stringa con terminazione Null contenente il codice del componente. I primi 38 caratteri TCHAR ricevono il GUID per il componente e il 39° carattere riceve un carattere NULL di terminazione.

[out, optional] pdwInstalledContext

Flag che fornisce al contesto di installazione l'applicazione che ha installato il componente.

Contrassegno Significato
MSIINSTALLCONTEXT_USERMANAGED
1
L'applicazione viene installata nel contesto di installazione gestito dall'utente.
MSIINSTALLCONTEXT_USERUNMANAGED
2
L'applicazione viene installata nel contesto di installazione non gestita per utente.
MSIINSTALLCONTEXT_MACHINE
4
L'applicazione viene installata nel contesto di installazione per computer.

[out, optional] szSid

Riceve l'identificatore di sicurezza (SID) che identifica l'utente che ha installato l'applicazione proprietaria del componente. Il percorso riceve una stringa vuota se questa istanza dell'applicazione viene installata in un contesto di installazione per computer.

La lunghezza del buffer in questa posizione deve essere sufficientemente grande da contenere un valore stringa con terminazione Null contenente il SID. Se il buffer è troppo piccolo, la funzione restituisce ERROR_MORE_DATA e la posizione a cui punta pcchSid riceve il numero di TCHAR nel SID, senza includere il carattere NULL di terminazione.

Se szSid è impostato su NULL e pcchSid è un puntatore valido a una posizione in memoria, la funzione restituisce ERROR_SUCCESS e la posizione riceve il numero di TCHAR nel SID, non incluso il carattere null di terminazione. La funzione può quindi essere chiamata di nuovo per recuperare il valore, con il buffer szSid ridimensionato abbastanza grande per contenere *pcchSid + 1 caratteri.

Tipo SID Significato
stringa vuota
L'applicazione viene installata in un contesto di installazione per computer.
SID utente
SID per l'utente nel sistema che ha installato l'applicazione.

[in, out] pcchSid

Riceve il numero di TCHAR nel SID, senza includere il carattere Null di terminazione. Quando la funzione viene restituita, questa variabile viene impostata sulle dimensioni del SID richiesto indipendentemente dal fatto che la funzione possa copiare correttamente il SID e terminare il carattere Null nella posizione del buffer a cui punta szSid. 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. Se szSid e pcchSid sono entrambi impostati su NULL, la funzione restituisce ERROR_SUCCESS se il SID esiste, senza recuperare il valore SID.

Valore restituito

La funzione MsiEnumProductsEx restituisce uno dei valori seguenti.

Codice restituito Descrizione
ERROR_ACCESS_DENIED
I privilegi di amministratore sono necessari per enumerare i componenti delle applicazioni installati dagli utenti diversi dall'utente corrente.
ERROR_BAD_CONFIGURATION
I dati di configurazione sono danneggiati.
ERROR_INVALID_PARAMETER
Alla funzione viene passato un parametro non valido.
ERROR_NO_MORE_ITEMS
Non sono presenti altri componenti da enumerare.
ERROR_SUCCESS
Funzione completata.
ERROR_MORE_DATA
Il buffer fornito era troppo piccolo per contenere l'intero valore.
ERROR_FUNCTION_FAILED
La funzione non è riuscita.

Commenti

Nota

L'intestazione msi.h definisce MsiEnumComponentsEx come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows Installer 5.0 in Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Per informazioni sul Service Pack minimo di Windows Richiesto da una versione di Windows Installer, vedere i requisiti di Windows Installer Run-Time.
Piattaforma di destinazione Windows
Intestazione msi.h
Libreria Msi.lib
DLL Msi.dll