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.
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.
[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.
[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 |
---|---|
|
La aplicación se instala en un contexto de instalación por máquina. |
|
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 |
---|---|
|
Los privilegios de administrador son necesarios para enumerar los componentes de las aplicaciones instaladas por los usuarios distintos del usuario actual. |
|
Los datos de configuración están dañados. |
|
Se pasa un parámetro no válido a la función . |
|
No hay más componentes que enumerar. |
|
La función se ha realizado correctamente. |
|
El búfer proporcionado era demasiado pequeño para contener todo el valor. |
|
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 |