MsiEnumComponentsExA, fonction (msi.h)

La fonction MsiEnumComponentsEx énumère les composants installés. La fonction récupère le code du composant pour un composant chaque fois qu’il est appelé. Le code du composant est le GUID de chaîne propre au composant, à la version et à la langue.

Windows Installer 4.5 ou version antérieure : Non pris en charge. Cette fonction est disponible à partir de Windows Installer 5.0.

Syntaxe

UINT MsiEnumComponentsExA(
  [in, optional]  LPCSTR            szUserSid,
  [in]            DWORD             dwContext,
  [in]            DWORD             dwIndex,
  [out, optional] CHAR [39]         szInstalledComponentCode,
  [out, optional] MSIINSTALLCONTEXT *pdwInstalledContext,
  [out, optional] LPSTR             szSid,
  [in, out]       LPDWORD           pcchSid
);

Paramètres

[in, optional] szUserSid

Chaîne terminée par null qui contient un identificateur de sécurité (SID). L’énumération des composants installés s’étend aux utilisateurs identifiés par ce SID. La chaîne SID spéciale s-1-1-0 (Tout le monde) spécifie une énumération de tous les composants installés sur tous les produits de tous les utilisateurs du système. Une valeur SID autre que s-1-1-0 spécifie un SID utilisateur pour un utilisateur particulier et limite l’énumération aux instances d’applications installées par l’utilisateur spécifié.

Type SID Signification
NULL
Spécifie l’utilisateur actuellement connecté.
SID de l’utilisateur
Énumération d’un utilisateur spécifique dans le système. Un exemple de SID utilisateur est « S-1-3-64-2415071341-1358098788-3127455600-2561 ».
s-1-1-0
Spécifie tous les utilisateurs du système.
 
Remarque  

La chaîne SID spéciale s-1-5-18 (Système) ne peut pas être utilisée pour énumérer les applications installées dans le contexte d’installation par ordinateur. La définition de la valeur SID sur s-1-5-18 renvoie ERROR_INVALID_PARAMETER. Lorsque dwContext est défini sur MSIINSTALLCONTEXT_MACHINE uniquement, szUserSid doit avoir la valeur NULL.

 

[in] dwContext

Indicateur qui limite l’énumération du composant installé aux instances de produits installés dans le contexte d’installation spécifié. L’énumération inclut uniquement les instances de produit installées par les utilisateurs spécifiés par szUserSid.

Indicateur Signification
MSIINSTALLCONTEXT_USERMANAGED
1
Incluez les produits qui existent dans le contexte d’installation gérée par utilisateur.
MSIINSTALLCONTEXT_USERUNMANAGED
2
Incluez les produits qui existent dans le contexte d’installation non managé par utilisateur.
MSIINSTALLCONTEXT_MACHINE
4
Incluez les produits qui existent dans le contexte d’installation par ordinateur. Lorsque dwInstallContext a la valeur MSIINSTALLCONTEXT_MACHINE uniquement, le paramètre szUserSID doit avoir la valeur NULL.

[in] dwIndex

Spécifie l’index du composant à récupérer. Ce paramètre doit être égal à zéro (0) pour le premier appel à la fonction MsiEnumComponentsEx . Pour chaque appel suivant, l’index doit être incrémenté de 1. L’index ne doit être incrémenté que si l’appel précédent à la fonction retourne ERROR_SUCCESS. Les composants ne sont pas triés et peuvent être retournés par la fonction dans n’importe quel ordre.

[out, optional] szInstalledComponentCode

Mémoire tampon de sortie qui reçoit le GUID de code du composant pour le composant installé. La longueur de la mémoire tampon doit être suffisamment grande pour contenir une valeur de chaîne terminée par null contenant le code du composant. Les 38 premiers caractères TCHAR reçoivent le GUID du composant et le 39e caractère NULL de fin.

[out, optional] pdwInstalledContext

Indicateur qui donne au contexte d’installation l’application qui a installé le composant.

Indicateur Signification
MSIINSTALLCONTEXT_USERMANAGED
1
L’application est installée dans le contexte d’installation gérée par utilisateur.
MSIINSTALLCONTEXT_USERUNMANAGED
2
L’application est installée dans le contexte d’installation non managé par utilisateur.
MSIINSTALLCONTEXT_MACHINE
4
L’application est installée dans le contexte d’installation par ordinateur.

[out, optional] szSid

Reçoit l’identificateur de sécurité (SID) qui identifie l’utilisateur qui a installé l’application propriétaire du composant. L’emplacement reçoit une chaîne vide si cette instance de l’application est installée dans un contexte d’installation par ordinateur.

La longueur de la mémoire tampon à cet emplacement doit être suffisamment grande pour contenir une valeur de chaîne terminée par null contenant le SID. Si la mémoire tampon est trop petite, la fonction retourne ERROR_MORE_DATA et l’emplacement pointé par pcchSid reçoit le nombre de TCHAR dans le SID, sans inclure le caractère NULL de fin.

Si szSid a la valeur NULL et que pcchSid est un pointeur valide vers un emplacement en mémoire, la fonction retourne ERROR_SUCCESS et l’emplacement reçoit le nombre de TCHAR dans le SID, sans inclure le caractère null de fin. La fonction peut ensuite être appelée à nouveau pour récupérer la valeur, avec la mémoire tampon szSid redimensionnée suffisamment grande pour contenir *pcchSid + 1 caractères.

Type SID Signification
Chaîne vide
L’application est installée dans un contexte d’installation par ordinateur.
SID de l’utilisateur
SID de l’utilisateur dans le système qui a installé l’application.

[in, out] pcchSid

Reçoit le nombre de TCHAR dans le SID, sans inclure le caractère null de fin. Lorsque la fonction retourne, cette variable est définie sur la taille du SID demandé, si la fonction peut ou non copier correctement le SID et terminer le caractère null dans l’emplacement de mémoire tampon pointé par szSid. La taille est retournée sous la forme du nombre de TCHAR dans la valeur demandée, sans inclure le caractère null de fin.

Ce paramètre ne peut être défini sur NULL que si szSid a également la valeur NULL, sinon la fonction retourne ERROR_INVALID_PARAMETER. Si szSid et pcchSid sont tous deux définis sur NULL, la fonction retourne ERROR_SUCCESS si le SID existe, sans récupérer la valeur SID.

Valeur retournée

La fonction MsiEnumProductsEx retourne l’une des valeurs suivantes.

Code de retour Description
ERROR_ACCESS_DENIED
Les privilèges d’administrateur sont requis pour énumérer les composants des applications installées par des utilisateurs autres que l’utilisateur actuel.
ERROR_BAD_CONFIGURATION
Les données de configuration sont endommagées.
ERROR_INVALID_PARAMETER
Un paramètre non valide est passé à la fonction .
ERROR_NO_MORE_ITEMS
Il n’y a plus de composants à énumérer.
ERROR_SUCCESS
La fonction a réussi.
ERROR_MORE_DATA
La mémoire tampon fournie était trop petite pour contenir la valeur entière.
ERROR_FUNCTION_FAILED
La fonction a échoué.

Remarques

Notes

L’en-tête msi.h définit MsiEnumComponentsEx en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Installer 5.0 sur Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Pour plus d’informations sur le Service Pack Windows minimal requis par une version de Windows Installer, consultez Configuration requise pour le runtime Windows Installer.
Plateforme cible Windows
En-tête msi.h
Bibliothèque Msi.lib
DLL Msi.dll