MsiEnumProductsExA, fonction (msi.h)
La fonction MsiEnumProductsEx énumère une ou toutes les instances de produits actuellement publiés ou installés dans les contextes spécifiés. Cette fonction remplace MsiEnumProducts.
Syntaxe
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
);
Paramètres
[in, optional] szProductCode
ProductCode GUID du produit à énumérer. Seules les instances de produits dans l’étendue du contexte spécifié par les paramètres szUserSid et dwContext sont énumérées. Ce paramètre peut être défini sur NULL pour énumérer tous les produits dans le contexte spécifié.
[in] szUserSid
Chaîne terminée par null qui spécifie un identificateur de sécurité (SID) qui limite le contexte d’énumération. La chaîne SID spéciale s-1-1-0 (Tout le monde) spécifie l’énumération sur tous les utilisateurs du système. Une valeur SID autre que s-1-1-0 est considérée comme un SID utilisateur et limite l’énumération à l’utilisateur actuel ou à tout utilisateur du système. Ce paramètre peut être défini sur NULL pour restreindre l’étendue d’énumération à l’utilisateur actuel.
[in] dwContext
Limite l’énumération à un contexte. Ce paramètre peut être une ou une combinaison des valeurs indiquées dans le tableau suivant.
[in] dwIndex
Spécifie l’index du produit à récupérer. Ce paramètre doit être égal à zéro pour le premier appel à la fonction MsiEnumProductsEx, puis incrémenté pour les appels suivants. L’index doit être incrémenté, uniquement si l’appel précédent a retourné ERROR_SUCCESS. Étant donné que les produits ne sont pas commandés, tout nouveau produit a un index arbitraire. Cela signifie que la fonction peut retourner des produits dans n’importe quel ordre.
[out, optional] szInstalledProductCode
Chaîne terminée par null de TCHAR qui donne le GUID ProductCode de l’instance de produit énumérée. Ce paramètre peut être NULL.
[out, optional] pdwInstalledContext
Retourne le contexte de l’instance de produit énumérée. La valeur de sortie peut être MSIINSTALLCONTEXT_USERMANAGED, MSIINSTALLCONTEXT_USERUNMANAGED ou MSIINSTALLCONTEXT_MACHINE. Ce paramètre peut être NULL.
[out, optional] szSid
Mémoire tampon de sortie qui reçoit le SID de chaîne du compte sous lequel cette instance de produit existe. Cette mémoire tampon retourne une chaîne vide pour une instance installée dans un contexte par ordinateur.
Cette mémoire tampon doit être suffisamment grande pour contenir le SID. Si la mémoire tampon est trop petite, la fonction retourne ERROR_MORE_DATA et définit *pcchSid au nombre de TCHAR dans le SID, sans inclure le caractère NULL de fin.
Si szSid est défini sur NULL et pcchSid est défini sur un pointeur valide, la fonction retourne ERROR_SUCCESS et définit *pcchSid au nombre de TCHAR dans la valeur, et n’inclut pas la NULL. La fonction peut ensuite être appelée à nouveau pour récupérer la valeur, avec le szSid mémoire tampon suffisamment grande pour contenir *pcchSid + 1 caractères.
Si szSid et pcchSid sont tous deux définis sur NULL, la fonction retourne ERROR_SUCCESS si la valeur existe, sans récupérer la valeur.
[in, out, optional] pcchSid
Lors de l’appel de la fonction, ce paramètre doit être un pointeur vers une variable qui spécifie le nombre d'TCHAR dans la mémoire tampon szSid. Lorsque la fonction est retournée, ce paramètre est défini sur la taille de la valeur demandée si la fonction copie la valeur dans la mémoire tampon spécifiée. La taille est retournée en tant que nombre de TCHAR dans la valeur demandée, sans inclure le caractère null de fin.
Ce paramètre peut être défini sur NULL uniquement si szSid est également NULL , sinon la fonction retourne ERROR_INVALID_PARAMETER.
Valeur de retour
La fonction MsiEnumProductsEx retourne l’une des valeurs suivantes.
Retourner le code | Description |
---|---|
|
Si l’étendue inclut des utilisateurs autres que l’utilisateur actuel, vous avez besoin de privilèges d’administrateur. |
|
Les données de configuration sont endommagées. |
|
Un paramètre non valide a été passé à la fonction. |
|
Il n’y a plus de produits à énumérer. |
|
Un produit est énuméré. |
|
Le paramètre szSid est trop petit pour obtenir le SID utilisateur. |
|
Le produit n’est pas installé sur l’ordinateur dans le contexte spécifié. |
|
Une défaillance interne inattendue. |
Remarques
Pour énumérer les produits, une application doit initialement appeler la fonction MsiEnumProductsEx avec le paramètre iIndex défini sur zéro. L’application doit ensuite incrémenter le paramètre iProductIndex
Lorsque vous effectuez plusieurs appels à MsiEnumProductsEx pour énumérer tous les produits, chaque appel doit être effectué à partir du même thread.
Un utilisateur doit disposer de privilèges d’administrateur pour énumérer les produits sur tous les comptes d’utilisateur ou un compte d’utilisateur autre que le compte d’utilisateur actuel. L’énumération ignore les produits publiés uniquement (tels que les produits non installés) dans le contexte non managé par utilisateur lors de l’énumération de tous les utilisateurs ou d’un utilisateur autre que l’utilisateur actuel.
Utilisez MsiGetProductInfoEx pour obtenir l’état ou d’autres informations sur chaque instance de produit énumérées par MsiEnumProductsEx.
Note
L’en-tête msi.h définit MsiEnumProductsEx comme 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. Le mélange 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.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows Installer 5.0 sur Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 sur Windows Server 2008 ou Windows Vista. Windows Installer 3.0 ou version ultérieure sur Windows Server 2003 ou Windows XP. Consultez la configuration requise de Windows Installer Run-Time pour plus d’informations sur le service pack Windows minimal requis par une version de Windows Installer. |
plateforme cible | Windows |
d’en-tête | msi.h |
bibliothèque | Msi.lib |
DLL | Msi.dll |
Voir aussi
non pris en charge dans Windows Installer 2.0 et versions antérieures