Establecer la seguridad del proceso de aplicación cliente
Las aplicaciones cliente que llaman a interfaces WMI pueden controlar los niveles de seguridad de sus procesos. Todas las aplicaciones WMI acceden a WMI a través de COM y puede llamar a la función COM CoInitializeSecurity para establecer la seguridad de los procesos. Aplicaciones que realizan llamadas asincrónicas a WMI y aplicaciones que se registran como consumidores de eventos establecen niveles de seguridad en la llamada a WMI.
Si no realiza una llamada explícita a CoInitializeSecurity, COM lo llama implícitamente con valores del registro. Sin embargo, los valores del Registro pueden tener una configuración inferior para la suplantación y la autenticación que no proporcionan la seguridad necesaria para WMI. Para obtener más información, vea Establecer el nivel de seguridad de proceso predeterminado mediante C++.
No se recomienda el acceso asincrónico a WMI. Una devolución de llamada asincrónica permite a un usuario no autenticado proporcionar datos al receptor. Esto supone riesgos de seguridad para los scripts y las aplicaciones. Para eliminar los riesgos, use la comunicación semiincrónica o sincrónica, o realice comprobaciones de acceso adecuadas en la aplicación cliente. Para obtener más información, vea Llamar a un método.
Las llamadas a cualquiera de los servidores proxy WMI (IWbemServices, IEnumWbemClassObject,IWbemCallResult o IWbemRefresher) usan un puntero fuera de proceso. Para obtener más información sobre los valores predeterminados y las recomendaciones, vea Establecer la seguridad en IWbemServices y otros servidores proxy.
En el procedimiento siguiente se describen los pasos que debe realizar para establecer la seguridad de WMI en el proceso de aplicación.
Para establecer la seguridad de WMI en el proceso de aplicación
- Determine los niveles de seguridad necesarios para los sistemas operativos Windows en los que se ejecuta la aplicación cliente.
- Llame a la función COM CoInitializeSecurity para establecer la seguridad predeterminada para el proceso en el que se ejecuta la aplicación cliente. Esto declara la cantidad de seguridad que requieren otras aplicaciones para acceder al proceso en el que se ejecuta la aplicación.
- Si necesita cambiar la seguridad en un proxy individual, por ejemplo, en otra llamada a IWbemServices, llame a CoSetProxyBlanket.
- Si necesita controlar el hardware remoto o un objeto del sistema que requiera más privilegios, use la función AdjustTokenPrivileges para habilitar los privilegios necesarios. Tenga en cuenta que no puede habilitar un privilegio que el proceso aún no tenga asignado. Para obtener más información, consulte Comprobación del acceso a objetos privados.
Para obtener más información sobre cómo establecer el nivel de seguridad de proceso predeterminado, vea Establecer el nivel de seguridad de proceso predeterminado mediante C++ y Establecer el nivel de seguridad de proceso predeterminado mediante VBScript.