Función MsiEnumComponentsExW (msi.h)

La función MsiEnumComponentsEx enumera los componentes instalados. La función recupera el código de componente de un componente cada vez que se llama a él. El código del componente es el GUID de cadena único para el componente, la versión y el idioma.

Windows Installer 4.5 o versiones anteriores: No se admite. Esta función está disponible a partir de Windows Installer 5.0.

Sintaxis

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
);

Parámetros

[in, optional] szUserSid

Cadena terminada en null que contiene un identificador de seguridad (SID). La enumeración de componentes instalados se extiende a los usuarios identificados por este SID. La cadena de SID especial s-1-1-0 (Todos) especifica una enumeración de todos los componentes instalados en todos los productos de todos los usuarios del sistema. Un valor de SID distinto de s-1-1-0 especifica un SID de usuario para un usuario determinado y restringe la enumeración a instancias de aplicaciones instaladas por el usuario especificado.

Tipo de SID Significado
NULL
Especifica el usuario que ha iniciado sesión actualmente.
SID de usuario
Enumeración de un usuario específico del sistema. Un ejemplo de SID de usuario es "S-1-3-64-2415071341-1358098788-3127455600-2561".
s-1-1-0
Especifica todos los usuarios del sistema.
 
Nota  

La cadena de SID especial s-1-5-18 (System) no se puede usar para enumerar las aplicaciones instaladas en el contexto de instalación por máquina. Al establecer el valor del SID en s-1-5-18, se devuelve ERROR_INVALID_PARAMETER. Cuando dwContext se establece en solo MSIINSTALLCONTEXT_MACHINE, szUserSid debe ser NULL.

 

[in] dwContext

Marca que restringe la enumeración del componente instalado a instancias de productos instalados en el contexto de instalación especificado. La enumeración incluye solo las instancias de producto instaladas por los usuarios especificados por szUserSid.

Marca Significado
MSIINSTALLCONTEXT_USERMANAGED
1
Incluya productos que existen en el contexto de instalación administrado por usuario.
MSIINSTALLCONTEXT_USERUNMANAGED
2
Incluya productos que existen en el contexto de instalación por usuario y no administrado.
MSIINSTALLCONTEXT_MACHINE
4
Incluya productos que existen en el contexto de instalación por máquina. Cuando dwInstallContext se establece en solo MSIINSTALLCONTEXT_MACHINE, el parámetro szUserSID debe ser NULL.

[in] dwIndex

Especifica el índice del componente que se va a recuperar. Este parámetro debe ser cero (0) para la primera llamada a la función MsiEnumComponentsEx . Para cada llamada posterior, el índice debe incrementarse en 1. El índice solo debe incrementarse si la llamada anterior a la función devuelve ERROR_SUCCESS. Los componentes no están ordenados y pueden devolverse por la función en cualquier orden.

[out, optional] szInstalledComponentCode

Un búfer de salida que recibe el GUID de código de componente para el componente instalado. La longitud del búfer debe ser lo suficientemente grande como para contener un valor de cadena terminado en null que contenga el código del componente. Los primeros 38 caracteres TCHAR reciben el GUID del componente y el carácter 39 recibe un carácter NULL de terminación.

[out, optional] pdwInstalledContext

Marca que proporciona al contexto de instalación la aplicación que instaló el componente.

Marca Significado
MSIINSTALLCONTEXT_USERMANAGED
1
La aplicación se instala en el contexto de instalación administrado por usuario.
MSIINSTALLCONTEXT_USERUNMANAGED
2
La aplicación se instala en el contexto de instalación por usuario y no administrado.
MSIINSTALLCONTEXT_MACHINE
4
La aplicación se instala en el contexto de instalación por máquina.

[out, optional] szSid

Recibe el identificador de seguridad (SID) que identifica al usuario que instaló la aplicación propietaria del componente. La ubicación recibe una cadena vacía si esta instancia de la aplicación está instalada en un contexto de instalación por máquina.

La longitud del búfer en esta ubicación debe ser lo suficientemente grande como para contener un valor de cadena terminado en null que contenga el SID. Si el búfer es demasiado pequeño, la función devuelve ERROR_MORE_DATA y la ubicación a la que apunta pcchSid recibe el número de TCHAR en el SID, no incluido el carácter NULL de terminación.

Si szSid se establece en NULL y pcchSid es un puntero válido a una ubicación en la memoria, la función devuelve ERROR_SUCCESS y la ubicación recibe el número de TCHAR en el SID, no incluido el carácter nulo de terminación. A continuación, se puede llamar a la función de nuevo para recuperar el valor, con el búfer szSid lo suficientemente grande como para contener *pcchSid + 1 caracteres.

Tipo de SID Significado
cadena vacía.
La aplicación se instala en un contexto de instalación por máquina.
SID de usuario
SID para el usuario en el sistema que instaló la aplicación.

[in, out] pcchSid

Recibe el número de TCHAR en el SID, no incluido el carácter nulo de terminación. Cuando la función devuelve, esta variable se establece en el tamaño del SID solicitado, independientemente de si la función puede copiar correctamente el SID y terminar el carácter NULL en la ubicación del búfer a la que apunta szSid. El tamaño se devuelve como el número de TCHAR en el valor solicitado, no incluido el carácter nulo de terminación.

Este parámetro solo se puede establecer en NULL si szSid también es NULL; de lo contrario, la función devuelve ERROR_INVALID_PARAMETER. Si szSid y pcchSid se establecen en NULL, la función devuelve ERROR_SUCCESS si existe el SID, sin recuperar el valor del SID.

Valor devuelto

La función MsiEnumProductsEx devuelve uno de los valores siguientes.

Código devuelto Descripción
ERROR_ACCESS_DENIED
Los privilegios de administrador son necesarios para enumerar los componentes de las aplicaciones instaladas por los usuarios distintos del usuario actual.
ERROR_BAD_CONFIGURATION
Los datos de configuración están dañados.
ERROR_INVALID_PARAMETER
Se pasa un parámetro no válido a la función .
ERROR_NO_MORE_ITEMS
No hay más componentes que enumerar.
ERROR_SUCCESS
La función se ha realizado correctamente.
ERROR_MORE_DATA
El búfer proporcionado era demasiado pequeño para contener todo el valor.
ERROR_FUNCTION_FAILED
Error en la función.

Comentarios

Nota

El encabezado msi.h define MsiEnumComponentsEx como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Installer 5.0 en Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Consulte Windows Installer para obtener información sobre el Service Pack mínimo de Windows que requiere una versión de Windows Installer.
Plataforma de destino Windows
Encabezado msi.h
Library Msi.lib
Archivo DLL Msi.dll